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