[理工] 作業系統 fork 範例疑問

作者: shi359 (歸人還是過客)   2016-06-25 17:43:50
這是清大周志遠老師的 os ppt 範例
#include <stdio.h>
void main( ) {
int A;
A = fork();
if(A == 0){
printf(“this is from child process\n”);
execlp(“/bin/ls”, “ls”, NULL);
} else{
printf(“this is from parent process\n”);
int pid = wait(&status);
printf(“Child %d completes”, pid);
}
printf(“process ends %d\n”, A);
}
Output:
this is from child process
this is from parent process
a.out hello.c readme.txt
Child 32185 completes
process ends 32185
想請問 為什麼 child 不會印出 process ends 0 呢?
謝謝
作者: TWkobe (中華柯比)   2016-06-25 20:38:00
我比較好奇為什麼status沒define?
作者: gary19941208   2016-06-25 23:09:00
"Process ends A"是在else裡面,所以那個A不是0child只會執行if(A==0)裡面的那段
作者: aa06697 (todo se andarà)   2016-06-25 23:39:00
樓上看錯了吧 不然就是原po打錯了那句是在else外面 最下面大括號是main的感覺應該要印吧 你有實際跑過一次程式碼
作者: gary19941208   2016-06-26 00:17:00
噢噢我看錯了,原來那個是main的括號...不過child還是不會印那行,因為execlp會把child的code section覆蓋成ls的code
作者: shi359 (歸人還是過客)   2016-06-26 08:10:00
感謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com