int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock*lock); 参数: fd:文件描述词。 cmd:操作命令。 arg:供命令使用的参数。 lock:同上。 有以下操作命令可供使用 1. F_DUPFD :复制文件描述词 。 2. FD_CLOEXEC :设置close-on-exec标志。如果FD_CLOEXEC位是0,执行ex...
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 ); printf("child, byt...
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 ); printf("child, byt...
close on exec, not on-fork, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。 eg: jamie@jamie-laptop:~$ cat test.c #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <string...
int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); 参数: fd:文件描述符。 cmd:操作命令。 arg:供命令使用的参数。 lock:同上。 有以下操作命令可供使用 一. F_DUPFD :复制文件描述符 。 二. FD_CLOEXEC :设置close-on-exec标志。如果FD_CLOEXEC位是0,执...
取得与文件描述符fd联合close-on-exec标志,类似FD_CLOEXEC。如果返回值和FD_CLOEXEC进行与运算结果是0的话,文件保持交叉式访问exec(), 否则如果通过exec运行的话,文件将被关闭(arg被忽略) F_SETFD 设置close-on-exec旗标。该旗标以参数arg的FD_CLOEXEC位决定 F_GETFL 取得fd的文件状态标志,如同下面的描述...
Action が F_DUPFD2 ならば、戻されるファイル記述子は、File_descriptor_2 と同等です。 File_descriptor_2 は、それが既に使用中であれば、クローズされます。F_CLOEXEC はクリアされます。 File_descriptor は複製されます。 File_descriptor が File_descriptor_2 と同等であると、...
int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); 参数: fd:文件描述词。 cmd:操作命令。 arg:供命令使用的参数。 lock:同上。 有以下操作命令可供使用 一. F_DUPFD :复制文件描述词 。 二. FD_CLOEXEC :设置close-on-exec标志。如果FD_CLOEXEC位是0,执...
int ret; flag = fcntl(1,F_GETFD,0); printf("close-on-exec is %d\n",flag); fcntl(1,F_SETFD,flag|FD_CLOEXEC); flag = fcntl(1,F_GETFD,0); printf("close-on-exec is %d\n",flag); //system("ls -l"); ret = execve("/bin/ls",argv,environ); ...
int fcntl(int fd, int cmd, ... /* arg */ ); 其中,操作类型由cmd决定。cmd可取如下值: F_DUPFD:复制文件描述符 F_DUPFD_CLOEXEC:复制文件描述符,新文件描述符被设置了close-on-exec F_GETFD:读取文件描述标识 F_SETFD:设置文件描述标识