使用fork()系统调用创建两个子进程,子进程1输出child1 Working...,子进程2输出child2 Working...的代码
时间: 2023-06-10 18:02:42 浏览: 42
好的,以下是使用fork()系统调用创建两个子进程,子进程1输出child1 Working...,子进程2输出child2 Working...的代码:
```
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
pid_t pid1, pid2;
pid1 = fork();
if(pid1 == 0) // 子进程1
{
printf("child1 Working...\n");
}
else if(pid1 > 0) // 父进程
{
pid2 = fork();
if(pid2 == 0) // 子进程2
{
printf("child2 Working...\n");
}
else if(pid2 < 0) // fork() 出错
{
printf("Error occured!\n");
}
}
else // fork() 出错
{
printf("Error occured!\n");
}
return 0;
}
```
希望这个代码能够解决你的问题。
相关问题
使用fork()系统调用创建两个子进程,子进程1输出child1 Running....,子进程2输出child2 Running....的代码
好的,以下是使用fork()系统调用创建两个子进程,子进程1输出child1 Running....,子进程2输出child2 Running....的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
pid_t pid1, pid2;
pid1 = fork();
if (pid1 < 0) {
printf("Fork failed.\n");
exit(1);
}
else if (pid1 == 0) {
printf("child1 Running....\n");
}
else {
pid2 = fork();
if (pid2 < 0) {
printf("Fork failed.\n");
exit(1);
}
else if (pid2 == 0) {
printf("child2 Running....\n");
}
}
return 0;
}
```
这段代码使用了两次fork()系统调用,第一次调用创建了一个子进程,第二次调用创建了另一个子进程。父进程中创建了两个子进程后,直接返回,因此不会输出任何内容。而子进程1和子进程2分别输出了"child1 Running...."和"child2 Running...."。
使用系统调用fork()创建test.c的两个子进程
可以使用以下代码来创建两个子进程:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
int pid1, pid2;
pid1 = fork(); // 创建第一个子进程
if (pid1 == 0) { // 子进程代码
printf("I am the first child process, my pid is %d\n", getpid());
} else if (pid1 > 0) { // 父进程代码
pid2 = fork(); // 创建第二个子进程
if (pid2 == 0) { // 第二个子进程代码
printf("I am the second child process, my pid is %d\n", getpid());
} else if (pid2 > 0) { // 父进程代码
printf("I am the parent process, my pid is %d\n");
} else { // 创建第二个子进程失败
printf("Failed to create second child process\n");
}
} else { // 创建第一个子进程失败
printf("Failed to create first child process\n");
}
return 0;
}
```
在上面的代码中,我们首先调用 `fork()` 函数创建第一个子进程,然后判断当前进程是否为子进程。如果是子进程,则输出一条消息;如果不是,则再次调用 `fork()` 函数创建第二个子进程,并分别判断当前进程是父进程、第一个子进程还是第二个子进程,并输出相应的消息。
需要注意的是,`fork()` 函数会返回两次,一次在父进程中返回子进程的进程ID,另一次在子进程中返回0。因此,我们需要在代码中根据返回值来判断当前进程是父进程还是子进程。