【发布时间】:2019-02-12 18:27:30
【问题描述】:
在 fcntl() 函数中 F_GETFD 在 unix 中的含义是什么?,据我了解,如果指定位置没有文件描述符,它应该返回 -1。如果是这样,什么时候会发生?在该位置接近文件描述符时,F_GETFD 也不返回 -1 ..
这是使用 F_GETFD 的程序的一部分,如果我关闭 x fd,它将不会返回 -1(由于我们事先关闭了 0 并执行了 dup(x),因此 fd 在 fd 表中输入了 0):
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <signal.h>
void try(){
printf("got_sig\n");
}
int main(int argc, char *argv[]){
int x, stdout=1;
signal(SIGUSR1,&try);
x = open("t1.txt",O_RDWR|O_CREAT, 0666);
close(0);
dup(x);
close(x);
if (fcntl(0,F_GETFD)==-1)
printf("false\n");
kill(getpid(),SIGUSR1);
//close(x);
write(stdout,"BYE\n",4);
exit(0);
}
F_GETFD 什么时候返回 -1 ?
【问题讨论】:
标签: bash unix file-descriptor