Что означает F_GETFD в функции fcntl () в unix? Как я понимаю, он должен возвращать -1, если в указанной позиции нет файлового дескриптора. Если это так, когда это произойдет?при выполнении в этом случае значения, близкого к файловому дескриптору, F_GETFD также не возвращает -1.
Это часть программы, использующей F_GETFD, и не возвращает -1, если я закрою x fd (thid fd ввел 0 в таблицу fd, так как мы предварительно закрыли 0 и сделали dup (x)):
#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?