c语言创建两个子进程,主进程打印"a",两个子进程打印"b"和"c"
时间: 2023-09-16 14:09:14 浏览: 92
下面是一个示例代码,使用fork函数创建两个子进程,主进程打印"a",子进程1打印"b",子进程2打印"c"。
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int pid1, pid2;
pid1 = fork(); // 创建子进程1
if (pid1 == 0) { // 子进程1
printf("b\n");
exit(0);
}
pid2 = fork(); // 创建子进程2
if (pid2 == 0) { // 子进程2
printf("c\n");
exit(0);
}
printf("a\n"); // 主进程
waitpid(pid1, NULL, 0); // 等待子进程1结束
waitpid(pid2, NULL, 0); // 等待子进程2结束
return 0;
}
```
输出:
```
a
b
c
```
相关问题
c语言编写一个进程程序,创建一个子进程,调用等待函数等待10s,打印输出进程的ID号
在C语言中,可以使用`fork()`函数创建子进程,然后在子进程中使用`sleep()`函数暂停一段时间,最后通过`printf()`打印子进程的ID号。下面是一个简单的示例:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid; // 子进程ID
// 创建子进程
if ((pid = fork()) < 0) {
perror("Fork failed");
exit(EXIT_FAILURE);
}
// 父进程无需等待,直接返回
if (pid > 0) {
printf("Parent process ID: %d\n", getpid()); // 打印父进程ID
return 0;
} else if (pid == 0) {
// 子进程部分
sleep(10); // 子进程等待10秒
printf("Child process ID: %d\n", getpid()); // 打印子进程ID
} else {
perror("Invalid PID");
exit(EXIT_FAILURE);
}
return 0;
}
```
在这个程序里,主进程创建了一个子进程,并立即返回。子进程在执行到`sleep(10)`时会暂停10秒,然后打印出它的进程ID。
编写一个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
```
阅读全文