繁体   English   中英

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

[英]C program with fifo is not working, Unix console waits for input

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

int main(){
char* fifo = "./f"; 
int x = mkfifo(fifo, 0700);
if ( x == -1){
    perror("error open");
    exit(EXIT_FAILURE);
}
int f = open (fifo, O_WRONLY);
if ( f == -1){
    perror("error open");
    exit(EXIT_FAILURE);
}
close(f);
unlink(fifo);
return 0;
}

在控制台中我像这样运行它

./x

什么也没有发生,只是 cursor 正在下一行等待输入。

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

mkfifo()手册页:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM