【发布时间】:2021-01-10 15:57:35
【问题描述】:
我正在尝试创建具有相同父级的 n 个子级,并从子级 -> 父级发送随机数。 现在,我有一个问题要从孩子 -> 父母发送随机 0/1。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>
#include<sys/wait.h>
int main()
{
pid_t pids[10];
int i;
int n = 10;
/* Start children. */
for (i = 0; i < n; ++i) {
if ((pids[i] = fork()) < 0) {
perror("fork");
abort();
} else if (pids[i] == 0) {
// printf("I am a child with id %d and my parent %d\n",getpid(),getppid());
int random = rand() % 2;
printf("\nChild send random: %d\n",random);
write(pids[1], &random, sizeof(random));
exit(0);
}
else{
int ran;
read(pids[0], &ran, sizeof(ran)); // read from child
printf("\nParent Received: %d\n", ran);
}
}
wait(NULL);
}
【问题讨论】:
-
read()的第一个参数是文件描述符,而不是 pid。 -
您没有创建任何管道。您的数组
pids包含 PID(进程 ID)而不是文件描述符。也许你可以在这里得到一些想法:stackoverflow.com/q/18242731/10622916