【发布时间】:2010-03-27 22:47:33
【问题描述】:
我正在尝试在另一个进程中创建一个子进程。我正在用 C 语言编写这两个程序。首先,我编写了一个虚拟进程,它将成为子进程。它所做的只是在屏幕上写一个字符串。它自己运作良好。然后我编写另一个程序,它将成为父进程。但是,我不能让它发生。我正在尝试同时使用 fork 和 execl 函数,但我失败了。我还希望子进程在父进程终止之前不会终止。
父进程应该怎么写?
谢谢。
这是子进程的代码:
#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,所有进程的曾祖父进程,它永远不会死亡)。
-
好的,抱歉,我用代码编辑了我的问题。
-
在你的 execl 语句之后添加一个 perror("execl") 看看会发生什么。
标签: c unix parent-child child-process