對於一個任務,我們需要實現一個帶有重定向和管道的基本shell。我的管道代碼退出程序,不再要求用戶輸入。管道在一個函數中執行,所以基本上控制不會返回到main。我該如何做到這一點?這裏是我的代碼:在Unix中使用管道C
void execute_pipe(char **argv,char **args)
{
int pfds[2];
pid_t pid;
int status;
pipe(pfds);
if ((pid = fork()) < 0) {
printf("*** ERROR: forking child process failed\n");
exit(1);
}
printf("here");
if (pid==0) {
close(1);
dup(pfds[1]);
close(pfds[0]);
if(execvp(argv[0],argv)<0){
printf("**error in exec");
}
}
else {
while (wait(&status) != pid) ;
close(0);
dup(pfds[0]);
close(pfds[1]);
if(execvp(args[0],args)<0){
printf("**error in exec");
}
}
}
...你有問題嗎? –
什麼是問題 –
對不起,問題是如何使它返回到主而不退出? – user1828941