我想從一個進程發送數組字符到另一個使用管道,字符傳遞,但不是所有的人!只有開始的部分。 這是我的代碼:管不能讀/寫所有的字符
int p1[2], p2[2];
int main()
{
pipe(p1);
int f1= fork();
if(f1 == 0)
{
char ar[100];
int n = 38;
for(int i=0;i<n;i++)
{ ar[i] = 'f'; }
close(p1[0]); //close the read
write(p1[1],ar,n+1);
} else if (f1 > 0)
{
wait(NULL);
int f2 = fork();
if(f2 == 0)
{
char arr2[100];
close(p1[1]); //close the write
int m = read(p1[0],arr2,strlen(arr2));
cout << arr2 << " " << m << endl;
}
else if (f2 > 0)
{wait(NULL);}
}
return 0;
}
您不會終止您發送/接收的「字符串」。另外,如果'read'失敗('m == -1'),那麼緩衝區的內容是未指定的。 –