fcntl не работает должным образом

Итак, я использую fcntl для сигнализации моего процесса, когда IO происходит в файле. Он работает на обычных каналах, но когда я переключаюсь на fifo или обычный текстовый файл, он не работает. Вот код:

void sighandler(int a){
cout<<"Here \n";
}

int main(){
unlink("temp.fifo");
if(mkfifo("temp.fifo", IPC_CREAT|0666)<0){perror("Error\n");}
int fd = open("file.txt", O_RDONLY);//open("temp.fifo", O_RDWR | O_ASYNC | O_NONBLOCK);
int fdi[2];
pipe(fdi);

signal(SIGIO, sighandler);
fcntl(fd, F_SETOWN, getpid());
fcntl(fd, F_SETSIG, SIGIO);
int flags = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, flags | O_ASYNC | O_NONBLOCK);
//while(1){write(fd, "stuff", 6);}
while(1){}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]