gpt4 book ai didi

C:使用 mknod() 创建命名管道不起作用

转载 作者:行者123 更新时间:2023-12-04 00:43:11 25 4
gpt4 key购买 nike

语言:C
操作系统: Ubuntu

我只是尝试使用以下命令创建一个名为管道的 FIFO:

state = mknod("pipe.txt", S_IFIFO | 0666, 0);

问题是我总是让状态的值为 -1(意味着它失败了)而不是 0。

perror 返回“pipe.txt:文件存在”

我不知道我应该如何调试这样的问题或可能是什么原因,希望任何人代码指导我出了什么问题。

(注意:文件 pipe.txt 与源文件位于同一路径。)

最佳答案

阅读:int mknod(const char *path, mode_t mode, rdev_t dev_identifier);
一般说明 :
创建一个新的字符特殊文件或 FIFO 特殊文件(命名管道),路径名在路径参数中指定。

如果文件已经存在,那么它将失败并显示错误:File exists
为避免此错误,请删除( unlink() )文件,正如我在下面的代码中所做的那样(阅读评论):

int main() {
char* file="pipe.txt";
unlink(file); // Add before mknod()
int state = mknod(file, S_IFIFO | 0666, 0);
if(state < 0){
perror("mknod() error");
}
return 0;
}

关于C:使用 mknod() 创建命名管道不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559461/

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