0

我正在尝试在 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 的位置)时它不起作用。我尝试添加“/。” 和管道名称之前的“/”,都不起作用。

4

1 回答 1

0

mkfifo() will create the Named pipe for Inter process communication in the name what you are giving in pipeNameo. Named pipes are created in hard disk for IPC mechanism.

In Command line give ls -l to view that file.

For more reference mkfifo()

于 2014-07-22T18:04:35.837 回答