我正试图在另一个进程中创建一个子进程。我正在用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