我对此过程的作业有疑问。 有一个父进程有两个孩子(第一个孩子打印问候),第二个孩子有另一个孩子。 父级应将bash命令“ ps”传递给子级(第二个),然后再传递另一个子级(孙子级),这应执行该命令。 我首先尝试仅传递一个字符串,以查看是否正确放置了所有管道以及父子之间的关系,但是它确实正确打印了该字符串。
您能帮我解决这个问题吗?以及bash命令?
感谢阅读此书的所有人
int main(){
pid_t pid;
int pipefd[2];
char comando[10] ;
pipe(pipefd);
fork();
pid = getpid();
if(pid == 0){ // figlio F1
printf("C:F1 printing...");
printf(" HELLO ");
}else if(pid > 0){//parent
printf("P: sending command ps to F2\n");
comando[10] = "ps";
close(pipefd[0]);
write(pipefd[1],(void*)&comando ,sizeof(comando) );
pid = fork();
if(pid == 0){//figlio F2
printf("C:F2 receiving from parent \n");
close( pipefd[1] );
read(pipefd[0], (void*)&comando , sizeof(comando));
printf("C:F2 riceve %s \n",comando);
pid = fork();
printf("C:F2 sending %s to F3\n",comando);
close(pipefd[0]);
write(pipefd[1], (void*)&comando, sizeof(comando));
if(pid == 0){
printf("C:F3 receiving from F2\n");
close( pipefd[1] );
read(pipefd[0], (void*)&comando , sizeof(comando));
//int system(const char *comando);
printf("C:F3 print %s \n",comando);
}
}
}else{
printf("fork error\n");
}
wait(NULL);
return 0;
}