fcntl()函数的问题

zonelight 2009-07-15 05:59:39
(void) fcntl( fileno( logfp ), F_SETFD, 1 );

thttpd.c: 在函数‘main’中:
thttpd.c:448: 错误:‘F_SETFD’未声明(在此函数内第一次使用)


fcntl
  表头文件 #include <fcntl.h>
  #include <fcntl.h>
  定义函数 int fcntl(int fd , int cmd);
  int fcntl(int fd,int cmd,long arg);
  int fcntl(int fd,int cmd,struct flock * lock);
  fcntl()用来操作文件描述词的一些特性。参数fd代表欲设置的文件描述词,参数cmd代表欲操作的指令。
  有以下几种情况:
  F_DUPFD用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd 的文件描述词。执行成功则返回新复制的文件描述词。请参考dup2()。F_GETFD取得close-on-exec旗标。若此旗标的 FD_CLOEXEC位为0,代表在调用exec()相关函数时文件将不会关闭。
  F_SETFD 设置close-on-exec 旗标。该旗标以参数arg 的FD_CLOEXEC位决定。
  F_GETFL 取得文件描述词状态旗标,此旗标为open()的参数flags。
  F_SETFL 设置文件描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O_NONBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。
  F_GETLK 取得文件锁定的状态。
  F_SETLK 设置文件锁定的状态。此时flcok 结构的l_type 值必须是F_RDLCK、F_WRLCK或F_UNLCK。如果无法建立锁定,则返回-1,错误代码为EACCES 或EAGAIN。

这个F_SETFD编译器不识别么?怎么这样阿?
...全文
430 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
linren 2009-07-16
  • 打赏
  • 举报
回复
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>

需要以上头文件
superbtl 2009-07-15
  • 打赏
  • 举报
回复
#include<unistd.h>
是不是这个头文件下的
你把头文件加全就行了
Nio96 2009-07-15
  • 打赏
  • 举报
回复
又是头文件的问题么。。。。查一下是不是少包含了

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧