每当我在linux c ++中运行我的命名管道程序时,SIGSTOP信号

时间:2013-08-16 06:04:33

标签: c++ linux signals named-pipes

我有一个检查管道是否存在的程序,所以在函数中写了这个:

status = mkfifo("recv",0666);
fd1 = open("recv",O_WRONLY);
fd2 = open("sendd", O_RDONLY);
cout<<"we are checking botth bcz we have both read and write in the program------:)";
if(fd1 <0 && fd2 <0)
{
    //strerror(errno);
    err = 1;// a const for remote
}
else if(fd1 >0 || fd2 >0){
    err = 2; // a const for local
}
else{
    err = 3; // a const for progrm failure error
    cout<<"program has some problems";
}

但每次我运行我的程序时它都会在fd1 = open(“recv”,O_WRONLY)时停止;说Thread1:信号SIGSTOP虽然它只能用fd2 = open(“sendd”,O_RDONLY)正常工作;我不知道为什么它会给出这个错误?我是linux中的新手。

1 个答案:

答案 0 :(得分:2)

RTFM,http://linux.die.net/man/3/mkfifo

  

以这种方式创建FIFO特殊文件后,任何进程都可以打开它进行读取或写入,方式与普通文件相同。但是,它必须在两端同时打开,然后才能继续对其进行任何输入或输出操作。打开FIFO以便正常读取块,直到某个其他进程打开相同的FIFO进行写入,反之亦然。