fcntl没有按预期工作

时间:2017-04-17 19:23:52

标签: c++ network-programming c++14 fcntl

因此,当文件上发生IO时,我正在使用fcntl来发信号通知我的进程。它正在使用普通管道,但是当我切换到fifos或普通文本文件时,它无法正常工作。这是代码:

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){}
}

0 个答案:

没有答案