我必须使用一个管道数组来在多个进程之间进行通信,这些进程声明如下:
int myPipe[count][2];
我像这样初始化它:
void init_tubes(int pipe_count, int pipe_array[pipe_count][2]){
for (int i = 0; i < pipe_count; i++){
if (pipe(pipe_array[i]) == -1){
perror("Error on tube init");
exit(1);
}
}
}
要在进程(分叉进程)之间进行通信,我使用的是这种结构:
typedef struct {
pid_t proc_id;
int generated_value;
} pid_values;
在使用此结构之前,可以正确传输信息。
但是现在如果我将我的结构的proc_id
值设置为其他值,我的数组的最后一个元素myPipe [i] [1]会被我设置为proc_id的值覆盖。
我仍然可以传输信息,有时只会覆盖最后一个文件描述符。
我声明我的结构:
pid_values my_values = {0, 0};
当我做my_values.proc_id = getpid();
时,最后一个fd被该pid覆盖。为什么?我该如何解决这个问题?