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()は、あなたが与えている名前でプロセス間通信用の名前付きパイプを作成しますpipeNameo。名前付きパイプは、IPC メカニズムのためにハードディスクに作成されます。

コマンドラインで、ls -lそのファイルを表示します。

詳しくはmkfifo()

于 2014-07-22T18:04:35.837 に答える