用c语言3-2编写一个程序,在主进程中创建一个子进程,子进程输出“This is the child process!”,主进程输出进程号及子进程号
时间: 2023-06-15 21:07:10 浏览: 102
下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
pid_t pid;
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork failed!\n");
exit(1);
} else if (pid == 0) {
printf("This is the child process!\n");
} else {
printf("Parent process id: %d, child process id: %d\n", getpid(), pid);
}
return 0;
}
```
程序中首先使用 `fork()` 创建子进程,然后根据返回值判断当前进程是父进程还是子进程。如果返回值小于 0,说明创建子进程失败;如果返回值为 0,说明当前进程是子进程,输出相应信息;如果返回值大于 0,说明当前进程是父进程,输出进程号及子进程号。最后返回 0 表示程序正常结束。
相关问题
编写一个C语言程序,在主进程中创建一个子进程,子进程输出“This is the child process!”,主进程输出进程号及子进程号。
实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
pid_t pid = fork(); // 创建子进程
if (pid < 0) {
perror("fork error");
exit(1);
} else if (pid == 0) {
// 子进程
printf("This is the child process!\n");
} else {
// 主进程
printf("Parent process id: %d, child process id: %d\n", getpid(), pid);
}
return 0;
}
```
运行结果:
```
This is the child process!
Parent process id: 1234, child process id: 1235
```
用从语言编写一个程序,在主进程中分别创建两个子进程,其中一个为僵尸进程,另一个为孤儿进程。
下面是一个C语言程序示例,可以创建一个僵尸进程和一个孤儿进程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid1, pid2;
pid1 = fork(); // 创建第一个子进程
if(pid1 < 0) {
printf("Error: fork() failed.\n");
exit(1);
} else if(pid1 == 0) {
// 子进程1
printf("Child process 1 (PID=%d) is running. Its parent is process %d.\n", getpid(), getppid());
exit(0); // 子进程1直接退出
} else {
pid2 = fork(); // 创建第二个子进程
if(pid2 < 0) {
printf("Error: fork() failed.\n");
exit(1);
} else if(pid2 == 0) {
// 子进程2
printf("Child process 2 (PID=%d) is running. Its parent is process %d.\n", getpid(), getppid());
sleep(5); // 子进程2休眠5秒钟,成为僵尸进程
exit(0);
} else {
// 父进程
printf("Parent process (PID=%d) is running.\n", getpid());
sleep(2); // 父进程休眠2秒,成为孤儿进程
printf("Parent process (PID=%d) is exiting.\n", getpid());
exit(0);
}
}
}
```
该程序首先创建第一个子进程,如果创建失败则输出错误信息并退出。如果创建成功,则输出第一个子进程的PID和父进程的PID。第一个子进程直接退出,成为一个僵尸进程。
接着程序创建第二个子进程,如果创建失败则输出错误信息并退出。如果创建成功,则输出第二个子进程的PID和父进程的PID。第二个子进程休眠5秒钟,成为一个僵尸进程。
最后程序的父进程输出自己的PID,然后休眠2秒钟,成为一个孤儿进程,最后输出自己的PID并退出。