C++ 如何通过管道发送和读取数组?
C++ How to send and read an array through a pipe?
我有一个 fork 程序,我希望父进程和子进程通过大小为 3 的数组进行通信,但我无法做到这一点。从旨在将数组传递给子进程的管道中读取似乎总是给出错误的值或不起作用。
这是我使用的代码:
int main()
{
int pw[2];
int piped = pipe(pw[2]);
pid_t pid = fork();
if(pid == 0)
{
close(pw[0]);
int d1[3] = {1, 2, 3};
write(pw[1], d1, 3*sizeof(int));
}
else
{
close(pw[1]);
int d2[3] = {0, 0, 0};
read(pw[0], d2, 3*sizeof(int));
for(int i = 0; i < 3; i++)
{
cout << d2[i];
}
}
}
大多数时候我什至没有在屏幕上打印任何内容。有什么建议吗?
查看 man 2 pipe、
int piped = pipe(pw[2]);
应该是
int piped = pipe(pw);
(因 OP 的更新而过时):
if(pid = 0)
should be
if(pid == 0)
if (pid = 0)
始终为假,并将 pid
更改为零。
我有一个 fork 程序,我希望父进程和子进程通过大小为 3 的数组进行通信,但我无法做到这一点。从旨在将数组传递给子进程的管道中读取似乎总是给出错误的值或不起作用。 这是我使用的代码:
int main()
{
int pw[2];
int piped = pipe(pw[2]);
pid_t pid = fork();
if(pid == 0)
{
close(pw[0]);
int d1[3] = {1, 2, 3};
write(pw[1], d1, 3*sizeof(int));
}
else
{
close(pw[1]);
int d2[3] = {0, 0, 0};
read(pw[0], d2, 3*sizeof(int));
for(int i = 0; i < 3; i++)
{
cout << d2[i];
}
}
}
大多数时候我什至没有在屏幕上打印任何内容。有什么建议吗?
查看 man 2 pipe、
int piped = pipe(pw[2]);
应该是
int piped = pipe(pw);
(因 OP 的更新而过时):
if(pid = 0)
should be
if(pid == 0)
if (pid = 0)
始终为假,并将 pid
更改为零。