0
我嘗試編輯我的文章,因爲它存在一些問題。C中的多個管道,等待輸入的程序
我仍然迷失,試圖擴大我的程序。當我運行程序時,進入只需要一些輸入的狀態 - 就像,也許是因爲我沒有在我的管道過程中輸入第二個程序。
我試圖遵循這個職位代碼:Does this multiple pipes code in C makes sense?
我的代碼如下所示:
int status;
int newpipe[2];
int oldpipe[2];
pid_t pid;
int countcmds = 0;
while (firstCmd != NULL) {
printf("En iteration \n");
if (firstCmd -> next != NULL) {
pipe(newpipe);
}
pid = fork();
if(pid == 0){
if (firstCmd -> prev != NULL) {
dup2(oldpipe[0],0);
close(oldpipe[0]);
close(oldpipe[1]);
}
if (firstCmd -> next != NULL) {
close(newpipe[0]);
dup2(newpipe[1],1);
close(newpipe[1]);
}
char** file = firstCmd -> cmd;
char* specfile = *file;
execvp(specfile, file);
}
else{
waitpid(pid, &status, 0);
if (firstCmd -> prev != NULL) {
close(oldpipe[0]);
close(oldpipe[1]);
}
if(firstCmd -> next != NULL){
oldpipe[0] = newpipe[0];
oldpipe[1] = newpipe[1];
}
countcmds++;
firstCmd = firstCmd -> next;
}
}
if(countcmds){
close(oldpipe[0]);
close(oldpipe[1]);
}
請問[這個問題]的答案(http://stackoverflow.com/questions/948221/does-this-multiple-pipes-code-in-c-makes-sense)有幫助嗎? – legoscia
我看到你接受的答案,謝謝。現在,你能準確解釋「不起作用」是什麼意思嗎?你得到了什麼,你期望什麼? – netcoder
現在自己發現了,現在工作:)! – user1090614