void helper(int *fd, int *total) {
int i;
for (i=0; i < (*total); i++) {
close(fd[i][0]);
}
}
下面是我的伪代码看起来像是什么,它会分叉多个子节点和管道,在所有子进程完成读取之后,它们调用辅助函数来关闭通道的读取结束。
int main() {
.
int fd[4][2]
.
.
.
if (fork()==0) {
helper(&(fd[4][2]), &i)
我收到一条错误消息:
error: subscript value is neither an array nor pointer nor vector
编辑:拼写错误&#34; for()&#34; to&#34; fork()&#34;
答案 0 :(得分:1)
int *fd
是维度数组的指针,因此您无法将其项目作为拖曳维度数组引用,如下所示:fd[i][0]
。
由于fd[4][2]
超出范围,因此数组访问再次[4][2]
错误。