[英]pipe can not read/write all the chars
我正在嘗試使用管道將char數組從一個進程發送到另一個進程,這些字符正在傳遞但不是全部! 只是開始的一部分。 這是我的代碼:
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;
}
您在未初始化的char
數組上調用std::strlen()
,這是您的錯誤。 std::strlen()
查找數組中空字節的首次出現並返回其位置。 但是該數組未初始化 ,因此使空字節的首次出現不確定 。
此外,您應該檢查庫函數的返回值( pipe()
, read()
, write()
, fork()
等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.