我正試圖在另一個進程中創建一個子進程。我正在用C語言編寫這兩個程序。首先我寫一個虛擬的過程,這將是孩子的過程。它所做的只是在屏幕上寫一個字符串。它獨立運作。然後我編寫另一個程序,這將是父進程。但是,我無法做到這一點。我試圖一起使用fork和execl函數,但是我失敗了。我也希望子進程不會終止,直到父進程終止。在Unix系統上創建子進程?
我應該如何編寫父進程?
謝謝。
這裏是子進程的代碼:
#include <stdio.h>
int main(void) {
while(1) {
printf("*");
sleep(1);
}
}
這裏是父進程:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void) {
if (fork()) {
while(1) {
printf("-\n");
sleep(5);
}
} else {
execl("./", "dummy", (char *)0);
}
}
你說你「失敗」,但你沒有顯示任何代碼。你如何期待我們告訴你做錯了什麼?另外,父進程管理子進程,所以子進程總是在父進程之前完成。如果父進程先死了,那麼祖父會採用子進程(最高爲/ sbin/init,所有進程的最高祖父進程,永遠不會死掉)。 – Juliano 2010-03-27 23:03:16
好吧,對不起,我用代碼編輯了我的問題。 – 2010-03-27 23:09:45
在execl語句後添加一個perror(「execl」),看看會發生什麼。 – Duck 2010-03-27 23:54:19