Gri*_*han 0

fcntl()函数对打开的描述符执行各种操作。其语法为:

int fcntl(int descriptor,
          int command,
          ...) 
Run Code Online (Sandbox Code Playgroud)

阅读有关返回值的信息

  • -1然后 fcntl()没有成功。设置 errno 全局变量来指示错误。

这段代码:

#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int main(){
   int flags;   
   if((flags = fcntl(-1,F_GETFL,0)) < 0){
    perror("fcntl: ");
   }
   printf("\n %d\n", flags);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

~$ gcc xx.c
~$ ./a.out 
fcntl: : Bad file descriptor

 -1
Run Code Online (Sandbox Code Playgroud)

请注意,打印的 flags-1表示调用未成功,fcntl(-1,F_GETFL,0); 因为-1不是有效的文件描述符。有效的文件描述符0. (这就是perror()打印错误消息 Bad file detector , EBADF 的内容)

注意:我在Linux系统中运行此代码。

编辑
F_GETFL用于 fcntl() 中的 GET flags 命令。