Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带fifo的C程序不工作,Unix控制台等待输入_C_Shell_Unix_Fifo - Fatal编程技术网

带fifo的C程序不工作,Unix控制台等待输入

带fifo的C程序不工作,Unix控制台等待输入,c,shell,unix,fifo,C,Shell,Unix,Fifo,我想制作一个使用fifo的简单程序。我编译了这段代码,当我运行它时,控制台正在等待输入。我试着把printf放在第一行,但它并没有出现在控制台上 int main{ 字符*先进先出=./f; int x=mkfifofifo,0700; 如果x==-1{ 佩罗雷罗公开赛; exitEXIT_失败; } int f=开放式fifo,仅限O_; 如果f==-1{ 佩罗雷罗公开赛; exitEXIT_失败; } 关闭; 取消FIFO的链接; 返回0; } 在控制台中,我这样运行它 ./x 什么也没发

我想制作一个使用fifo的简单程序。我编译了这段代码,当我运行它时,控制台正在等待输入。我试着把printf放在第一行,但它并没有出现在控制台上

int main{ 字符*先进先出=./f; int x=mkfifofifo,0700; 如果x==-1{ 佩罗雷罗公开赛; exitEXIT_失败; } int f=开放式fifo,仅限O_; 如果f==-1{ 佩罗雷罗公开赛; exitEXIT_失败; } 关闭; 取消FIFO的链接; 返回0; } 在控制台中,我这样运行它

./x
什么也没发生,只是光标在下一行,等待输入

为什么我的程序没有运行?

从mkfifo手册页:

打开FIFO进行读取通常会阻塞,直到其他进程打开相同的FIFO进行写入,反之亦然。有关FIFO特殊文件的非阻塞处理,请参见FIFO 7

因此,在调用open之后,您的进程将被挂起,直到另一个进程打开具有读访问权限的fifo。在您的情况下,这种情况永远不会发生。

从mkfifo手册页:

打开FIFO进行读取通常会阻塞,直到其他进程打开相同的FIFO进行写入,反之亦然。有关FIFO特殊文件的非阻塞处理,请参见FIFO 7


因此,在调用open之后,您的进程将被挂起,直到另一个进程打开具有读访问权限的fifo。在您的情况下,这种情况永远不会发生。

您应该在控制台中运行该过程。执行文件在手册页中命名为x?文件:以这种方式创建FIFO特殊文件后,任何进程都可以以与普通文件相同的方式打开该文件进行读取或写入。但是,在继续对其执行任何输入或输出操作之前,它必须在两端同时打开。打开FIFO进行读取通常会阻塞,直到其他进程打开相同的FIFO进行写入,反之亦然。有关FIFO特殊文件的非阻塞处理,请参阅FIFO 7。对不起,您的意思是什么?你开始了吗?你是否期望发生一些不可能发生的事情?这是不是发生了什么让你惊讶的事情?你能重新格式化你的代码让它更可读吗?你应该在控制台中运行这个过程。执行文件在手册页中命名为x?文件:以这种方式创建FIFO特殊文件后,任何进程都可以以与普通文件相同的方式打开该文件进行读取或写入。但是,在继续对其执行任何输入或输出操作之前,它必须在两端同时打开。打开FIFO进行读取通常会阻塞,直到其他进程打开相同的FIFO进行写入,反之亦然。有关FIFO特殊文件的非阻塞处理,请参阅FIFO 7。对不起,您的意思是什么?你开始了吗?你是否期望发生一些不可能发生的事情?这是不是发生了什么让你惊讶的事情?你能重新格式化你的代码使它更可读吗?