看到書上有這句話(不懂):
F_GETFL 對應於filedes 的文件狀態標志作為函數值返回。在說明 open函數時,已說明了文件狀態標志 不幸的是,三個存取方式標志 (O_RDONLY,O_WRONLY,以及O_RDWR)並不各占1位。(正如前述,這三種標志的值各是 0、1和2,由於歷史原因。這三種值互斥 — 一個文件只能有這三種值之一。 )因此首先必須用屏蔽字 O_ACCMODE相與 取得存取方式位,然後將結果與這三種值相比較。
fcntl(fd,F_GETFL,0)操作返回的結果是什麼???
代碼測試:返回不懂
/**
fcntl——manipulate(/məˈnɪpjʊleɪt;) file descriptor
**/
#include
#include
#include
#include
#include
int main(){
int fd;
int power;
if((fd = open("/home/hq/example/mydocs/linux",O_RDONLY | O_CREAT)) == -1){
printf("open failed!\n");
return 0;
}
//得到進程文件的描述符標志
if((power = fcntl(fd,F_GETFL,0)) ==-1){
printf("fcntl failed!\n");
return 0;
}
printf("%d--\n",power);
return 0;
}
fcntl()用來操作文件描述符的一些特性。fcntl 不僅可以施加建議性鎖,還可以施加強制鎖。同時,fcntl還能對文件的某一記錄進行上鎖,也就是記錄鎖。
cntl的返回值與命令有關。如果出錯,所有命令都返回-1,如果成功則返回某個其他值。下列四個命令有特定返回值:F_DUPFD、F_GETFD、F_GETFL、F_GETOWN.第一個返回新的文件描述符,接下來的兩個返回相應標志,最後一個返回一個正的進程ID或負的進程組ID。