要打開信號量,我看到了以下運算式:
sem_t semaphore = sem_open("/sempath", 0);
手冊頁說最后的整數是“oflag”,我應該閱讀更多關于oflag的資訊,fcntl.h但我無法弄清楚數字0映射到什么oflag。
上面的代碼是什么0意思?是O_RDWR嗎?
更一般地說:標志映射到什么數字,fcntl.h我如何找到它們?
uj5u.com熱心網友回復:
上面的代碼是什么
0意思?是O_RDWR嗎?
0意味著沒有標志。傳遞給sem_open和類似例程的標志引數,例如open由為這些例程記錄的各種符號定義的單個位或位域的邏輯或。當沒有標志時,不會對引數進行或運算,因此其值應該是 OR 操作的標識元素,即零。
中的標志
fcntl.h映射到哪些數字,我如何找到它們?
您可以在其中fcntl.h或其中包含的檔案中找到它們。或者,更容易的是,您可以撰寫一個列印它們的程式:
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <fcntl.h>
int main(void)
{
printf("O_CREAT is 0x%" PRIxMAX ".\n", (uintmax_t) O_CREAT);
printf("O_EXCL is 0x%" PRIxMAX ".\n", (uintmax_t) O_EXCL);
}
但是,您不應該依賴這些具有特定值的符號,尤其是在不同的 POSIX 實作中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/532224.html
標籤:C
