在当前进程中创建一个子进程,并给子进程加载新程序hello,hello程序即显示“Hello, World!”即可,并保证子进程先于父进程执行。
时间: 2024-03-12 11:45:38 浏览: 53
可以使用fork()和exec()函数组合来实现在当前进程中创建一个子进程,并给子进程加载新程序hello。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid;
pid = fork(); // 创建子进程
if (pid < 0) { // 创建子进程失败
printf("Error: fork failed.\n");
exit(-1);
}
else if (pid == 0) { // 子进程
printf("Child process is running.\n");
execl("./hello", "hello", NULL); // 加载新程序hello
exit(0);
}
else { // 父进程
wait(NULL); // 等待子进程退出
printf("Parent process is running.\n");
exit(0);
}
return 0;
}
```
其中,fork()函数用于创建子进程,返回值为0表示当前进程为子进程,返回值大于0表示当前进程为父进程,返回值小于0表示创建子进程失败。
在子进程中,使用execl()函数加载新程序hello,第一个参数表示要加载的程序路径,第二个参数表示程序名称,第三个参数为NULL表示参数列表结束。如果execl()函数执行成功,子进程会被新程序替换掉,否则子进程会继续执行。
在父进程中,使用wait()函数等待子进程退出,避免子进程成为僵尸进程。
阅读全文