#include <unistd.h>
#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
int main (int argc, char * argv[])
{
int enteroParaElPipe;
int IDPROGRAMACLIENTE=getpid();
printf("%d",IDPROGRAMACLIENTE);
if((mkfifo("pipe",0666))==-1)
{
perror("error creating pipe, type 1");
exit(1);
}
if((enteroParaElPipe=open("pipe",O_WRONLY))==-1)
{
perror("error creating pipe, type 2");
exit(1);
}
char comando[200];
if(scanf("%199s", comando) == 1)
puts(comando);
int written;
escritos=write(enteroParaElPipe,"HOLA\n",5);
printf("Written: %d\n",written);
close(enteroParaElPipe);
return 0;
}
私が取得:このパイプには何が問題なのですか?このコードを実行しようとすると
error creating pipe: Invalid argument
なぜ?
(追加された最初の回答に基づいて修正)
は、なぜあなたは 'mkfifo'にPIDを渡していますか?また、さまざまなエラーケースに対して異なるメッセージを使用して、どのエラーが発生したかを知ることができます。 –
コードのフォーマットは恐ろしいものでした。私はそれを少し改良し、それはまだ醜いです。人々があなたのコードを理解してもらいたいのですか?あなたができることはフォーマットすることです。 – abelenky
@abelenky:はい、申し訳ありません。無関係な無関係な部分を取り出しました。 – andandandand