ここでは概念です:
クライアントは、標準入力からのパス名を読み取り、サーバーpipe1.Theへの書き込みはpipe1このパス名を読み取り、 reading.Ifは、サーバー用のファイルを開くことができますにファイルをオープンしようとすると、サーバはファイルを読み、それを書くことによって応答pipe2に、それ以外のサーバーは、同じpipe.Theクライアントにして、エラーメッセージを書き込むpipe2から読み取り、それを受信するには標準出力に書き込ま
ここに私のコードです:
コード:
#include <stdio.h>
#include <string.h>
#define maxsize 1000
char buffer [maxsize];
void client(int readfd,int writefd)
{
puts("give pathname:");
gets(buffer);
write(writefd,buffer,strlen(buffer));
//sleep(10);
while((read(readfd,buffer,strlen(buffer)))>0);
printf("%s/n",buffer);
}
void server(int readfd,int writefd)
{
FILE * fp;
char line[100];
//sleep(10);
read(readfd,buffer,strlen(buffer));
fp=fopen(buffer,"r");
if(fp==NULL)
{
strcpy(buffer,"cannot oepn file");
write(writefd,buffer,strlen(buffer));
}
else
while(fgets(line,100,fp)!=NULL)
write(writefd,line,100);
}
int main()
{
int pipe1[2],pipe2[2];
int childpid;
int status;
pipe(pipe1);
pipe(pipe2);
childpid=fork();
if(childpid>0)
{
close(pipe1[0]);
close(pipe2[1]);
client(pipe2[0],pipe1[1]);
wait(&status);
exit(0);
}
else
{
close(pipe1[1]);
close(pipe2[0]);
server(pipe1[0],pipe2[1]);
exit(0);
}
}
実際、私はその理由を私はまだ2睡眠のコマンドを入れるのレースの条件をいくつかの問題かもしれないが理解できないのは..
一般的に私は読んで、クライアントとサーバーのコマンドを書く方法を知らないけど... sychronizeしたい
誰かのコードを見て、私にアドバイスをする時は、事前に本当に感謝..... ..よろしくお願いいたします