mkfifo()没有在C中创建文件

时间:2014-07-22 17:47:11

标签: c named-pipes mkfifo

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

1 个答案:

答案 0 :(得分:0)

mkfifo()将使用您在pipeNameo中提供的名称为Inter进程通信创建命名管道。 IPC机制在硬盘中创建命名管道。

在命令行中,让ls -l查看该文件。

有关详情,请参阅mkfifo()