gpt4 book ai didi

linux - 如何在C中制作一个fifo?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:04 24 4
gpt4 key购买 nike

我必须在 Ubuntu 的 C 程序中使用 mkfifo。但是编译的时候报错:no such file or directory .

我觉得问题是因为我没有设置panel_fifo环境变量。但我不知道我怎么能这样做。

这是我用来测试此方法的代码:

char *myfifo="./sock/myfifo";

if (mkfifo(myfifo,0777)<0)
perror("can't make it");

if (fd=open(myfifo,O_WRONLY)<0)
perror("can't open it");

我编译它:

gcc gh.c -o gh

当我运行时,我收到此错误消息:

can't make it:no such file or directory
can't open it:no such file or directory

最佳答案

因为sock目录不存在

在终端中:

christian@fujiu1404:~/tmp/t2$ ls
t2.c
christian@fujiu1404:~/tmp/t2$ cat t2.c
#include <fcntl.h>

main() {

int fd;
char *myfifo="./sock/myfifo";

if (mkfifo(myfifo,0777)<0)
perror("can't make it");

if (fd=open(myfifo,O_WRONLY)<0)
perror("can't open it");

}
christian@fujiu1404:~/tmp/t2$ cc t2.c
christian@fujiu1404:~/tmp/t2$ ./a.out
can't make it: No such file or directory
can't open it: No such file or directory
christian@fujiu1404:~/tmp/t2$ mkdir sock
christian@fujiu1404:~/tmp/t2$ ./a.out

请注意程序尚未完成,但您的 fifo 确实存在。

现在在第二个终端中,将一个字符串放入 fifo

christian@fujiu1404:~/tmp/t2$ ls -l sock/
total 0
prwxrwxr-x 1 christian christian 0 May 27 06:45 myfifo
christian@fujiu1404:~/tmp/t2$ echo abc >sock/myfifo

注意echo也被挂起

现在在第三个终端中,从 fifo 中读取

christian@fujiu1404:~/tmp/t2$ cat sock/myfifo 
abc
christian@fujiu1404:~/tmp/t2$

注意现在所有程序完成并退出(在所有终端中)

关于linux - 如何在C中制作一个fifo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com