gpt4 book ai didi

c++ - 管道无法读取/写入所有字符

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:27 24 4
gpt4 key购买 nike

我正在尝试使用管道将字符数组从一个进程发送到另一个进程,字符正在传递但不是全部!只是开始的部分。这是我的代码:

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() 等)。

关于c++ - 管道无法读取/写入所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30257548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com