gpt4 book ai didi

c - mkfifo() 未在 C 中创建文件

转载 作者:行者123 更新时间:2023-11-30 17:30:52 24 4
gpt4 key购买 nike

我正在尝试用 C 创建命名管道,但没有成功。

这是我的代码:

pid_t pid = getpid() ;
char * pipeNameo = malloc( sizeof(char) * 100 ) ;
len = 0 ;

//len += sprintf( pipeNameo + len, "%s", "/Users/Davidb/Desktop/") ; // tried various paths
len += sprintf( pipeNameo + len, "%ld", (long)pid) ;
len += sprintf( pipeNameo + len, "%s", "_") ;
len += sprintf( pipeNameo + len, "%d", i) ; // it is in a loop, i starts at 0 and increments
len += sprintf( pipeNameo + len, "%s", "o") ;

printf("pipeNameo : %s\n", pipeNameo ) ;
val = mkfifo(pipeNameo, 0666) ;
printf("Did named pipe succeed: %d\n", val) ;

因此,运行此命令后,我检查了目录,没有创建任何文件。以下是一些示例输出:

OUTPUT, when loop runs twice
pipeNameo : /Users/Davidb/Desktop/1152_0o
Did named pipe succeed: 0
pipeNameo : /Users/Davidb/Desktop/1152_1o
Did named pipe succeed: 0

请帮忙:)

更新好的,我看到当路径设置为我的桌面时 ls -l 起作用了!但当我尝试将其设置为当前目录(存储 main.c 的位置)时,它不起作用。我尝试添加“/”。和管道名称之前的“/”,都不起作用。

最佳答案

mkfifo() 将以您在 pipeNameo 中指定的名称创建用于进程间通信的命名管道。命名管道是在硬盘中创建的,用于IPC机制。

在命令行中输入ls -l来查看该文件。

更多引用mkfifo()

关于c - mkfifo() 未在 C 中创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894278/

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