C struct正在覆盖我的管道数组

时间:2017-09-17 12:30:14

标签: c arrays struct pipe

我必须使用一个管道数组来在多个进程之间进行通信,这些进程声明如下:

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覆盖。为什么?我该如何解决这个问题?

0 个答案:

没有答案