【发布时间】:2016-09-04 06:56:00
【问题描述】:
我想在矩阵中搜索作为参数传递的 int 值,并且我想使用 fork 来完成。 它应该同时搜索几行(每个不同的孩子将搜索不同的行。 但是我这样做的方式是一个孩子搜索第一行,然后另一个孩子搜索第二行,依此类推,但他们没有同时这样做..第二个孩子等待第一个孩子结束它开始前搜索。我想我没有像我应该的那样使用等待和退出。到目前为止,这是我的代码:
int main(int argc, char **argv){
int p,i,j,val,status;
int mat[6][100];
//matrix
for(i=0;i<6;i++){
for(j=0;j<100;j++){
mat[i][j]=5;
}
}
mat[1][96]=2;
if (argc<2) {
printf("Insert num\n");
exit(-1);
}
val=atoi(argv[1]);
for(i=0;i<6;i++){
p=fork();
if (p==0){
for(j=0;j<100;j++){
printf("n:[%d][%d] -> pID: %d, ppID: %d\n",i,j,getpid(),getppid()); //This line is to see how my search is being done.
if (mat[i][j]==val){
printf("Found at line %d, Column %d\n",i,j);
_exit(i);
}
}
}
else{
wait(&status);
exit(i);
}
}
return 0;
}
谢谢。
【问题讨论】: