我試圖理解下面的代碼做什麼:的代碼說明 - 叉,等待,execv
#include <stdio.h>
#include <stdlib.h>
#include <syscall.h>
#include <unistd.h>
int main(void) {
int pid;
for(;;) {
pid = fork();
printf(getpid());
if(pid == -1) {
printf("fork failed");
exit(1);
}
if(pid == 0) {
execv("MYFORKAPP", NULL);
exit(2);
}
wait();
}
return 0;
}
程序本身被稱爲MYFORKAPP
。我正在學習這3個函數,並且在互聯網上看到了這些代碼,我不明白它的作用。
我試圖運行它(Fedora GCC),但終端是空的。
是否應至少打印第一個getpid()
?
你能解釋我這個代碼嗎?
它看起來像[fork bomb](http://en.wikipedia.org/wiki/Fork_bomb)。 –
@leeduhem,父進程等待(阻塞調用)子進程。換句話說,父母程序不會有一個以上的子程序。 – someuser
@someuser這個子進程會再次執行相同的程序,它會fork()然後wait(),它的子進程會再次執行相同的操作,依此類推。不是正常的叉式炸彈,是的,但它仍然會創造很多過程,直到它不能。 –