int fcntl(int fd, int cmd, ... /* arg */ ); 其中,操作类型由cmd决定。cmd可取如下值: F_DUPFD:复制文件描述符 F_DUPFD_CLOEXEC:复制文件描述符,新文件描述符被设置了close-on-exec F_GETFD:读取文件描述标识 F_SETFD:设置文件描述标识 F_GETFL:读取文件状态标识 F_SETFL:设置文件状态标识 F_GETLK...
复制文件描述符(F_DUPFD或F_DUPFD_CLOEXEC); 获取/设置文件描述符标志(F_GETFD或F_SETFD); 获取/设置文件状态标志(F_GETFL或F_SETFL); 获取/设置异步 IO 所有权(F_GETOWN或F_SETOWN); 获取/设置记录锁(F_GETLK或F_SETLK)。 ...:fcntl()函数是一个可变参数函数,第三个参数根据不同的cmd需要传入相应...
F_GETFD 取得与文件描述符fd联合close-on-exec标志,类似FD_CLOEXEC。如果返回值和FD_CLOEXEC进行与运算结果是0的话,文件保持交叉式访问exec(), 否则如果通过exec运行的话,文件将被关闭(arg被忽略) F_SETFD 设置close-on-exec旗标。该旗标以参数arg的FD_CLOEXEC位决定 F_GETFL 取得fd的文件状态标志,如同...
F_GETFD取得与文件描述符fd联合close-on-exec标志,类似FD_CLOEXEC. 如果返回值和FD_CLOEXEC进行与运算结果是0的话,文件保持交叉式访问exec(),否则如果通过exec运行的话,文件将被关闭(arg被忽略) F_SETFD设置close-on-exec旗标。该旗标以参数arg的FD_CLOEXEC位决定。 F_GETFL取得fd的文件状态标志,如同下面的描述...
fd:文件描述符 F_DUPFD:复制文件描述符 F_GETFD:获得fd的close-on-exec标志,若标志未设置,则文件经过exec函数之后仍保持打开状态 F_SETFD:设置close-on-exec标志,该标志以参数arg的FD_CLOEXEC位决定 F_GETFL:得到open设置的标志 函数传入值 cmd F_SETFL:改变open设置的标志 ...
设置/获取文件描述符标志 F_GETFD (void) F_SETFD (long) 设置/获取文件状态标志 F_GETFL (void) F_SETFL (long) 获取/设置文件锁 F_GETLK F_SETLK,F_SETLKW 其中复制文件描述符可参见《linux系统编程之文件与I/O(五):打开文件的内核结构file和重定向》,文件描述符的标志只有一个即FD_CLOEXEC,设置/获取...
函数原型int fcnt1(int fd, int cmd, struct flock *lock) F_DUPFD:复制文件描述符 F_GETFD:获得fd的close-on-exec标志,若标志未设置,则文件经过exec函数之后仍保持打开状态 F_SETFD:设置close-on-exec标志,该标志以参数arg的FD_CLOEXEC位决定 F_GETFL:得到open设置的标志 cmd F_SETFL:改变open设置的标志 ...
F_SETFD:设置文件描述符的标志。 文件描述符标志目前只有一个:FD_CLOEXEC。 FD_CLOEXEC: 如果设置了该标志,则当调用 exec 系列函数执行新程序时,文件描述符会被自动关闭。 int flags = fcntl(fd, F_GETFD); if (flags == -1) { perror("fcntl F_GETFD"); ...
int val=fcntl(fd,F_GETFD); val|=FD_CLOEXEC; fcntl(fd,F_SETFD,val); pid=fork(); if(pid==0) { //子进程中,此描述符并不关闭,仍可使用 char child_buf[2]; memset(child_buf,0,sizeof(child_buf) ); ssize_t bytes = read(fd,child_buf,sizeof(child_buf)-1 ); ...
int val=fcntl(fd,F_GETFD); val|=FD_CLOEXEC; fcntl(fd,F_SETFD,val); pid=fork(); if(pid==0) { //子进程中,此描述符并不关闭,仍可使用 char child_buf[2]; memset(child_buf,0,sizeof(child_buf) ); ssize_t bytes = read(fd,child_buf,sizeof(child_buf)-1 ); ...