在linux环境下,用for循环创建三个子进程,实现三次循环创建三个子进程。并在父进程和子进程中输出进程号
时间: 2024-04-29 07:21:10 浏览: 17
```shell
#!/bin/bash
for (( i=1; i<=3; i++ ))
do
echo "第 $i 次循环创建子进程"
for (( j=1; j<=3; j++ ))
do
echo "第 $j 次创建子进程"
if [ $j -eq 1 ]; then
echo "父进程号:$$"
fi
echo "子进程号:$(($(echo $$)+1))"
sleep 1
done
done
```
解释:
- `for (( i=1; i<=3; i++ ))` 循环三次,每次创建三个子进程
- `for (( j=1; j<=3; j++ ))` 循环三次,每次创建一个子进程
- `if [ $j -eq 1 ]; then` 判断是否是第一个子进程,如果是则输出父进程号
- `echo "子进程号:$(($(echo $$)+1))"` 输出当前子进程号,其中`$$`表示当前进程号,`$(())`表示计算括号内的算式
- `sleep 1` 延时1秒,方便观察进程号输出
相关问题
linux编写程序在程序中创建一个子进程,使父进程和子进程打印不同的内容
可以使用 fork() 系统调用在程序中创建一个子进程。fork() 调用会返回两次,一次在父进程中返回子进程的进程 ID,另一次在子进程中返回0。可以利用这个特性来区分父进程和子进程。
以下是一个示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
fprintf(stderr, "fork failed\n");
exit(1);
} else if (pid == 0) {
// 子进程
printf("Hello from child process!\n");
} else {
// 父进程
printf("Hello from parent process!\n");
}
return 0;
}
```
运行该程序,会看到输出:
```
Hello from parent process!
Hello from child process!
```
可以看到,父进程和子进程打印了不同的内容。
Linux父进程创建三个子进程
Linux 系统是一个开放源代码的操作系统,其父进程可以创建多个子进程来并行运行不同的任务。以下是一种可能的创建三个子进程的方式:
```python
import os
# 创建子进程1
pid1 = os.fork()
if pid1 == 0:
# 子进程1的代码
print("子进程1的PID是:", os.getpid())
# 创建子进程2
pid2 = os.fork()
if pid2 == 0:
# 子进程2的代码
print("子进程2的PID是:", os.getpid())
# 创建子进程3
pid3 = os.fork()
if pid3 == 0:
# 子进程3的代码
print("子进程3的PID是:", os.getpid())
```
在上面的代码中,每个子进程都打印出自己的 PID(进程 ID)。因为每个子进程都从父进程 fork() 函数返回 0,所以可以通过这个值来区分不同的进程。父进程会返回子进程的 PID,因此可以通过比较 PID 是否为 0 来区分父进程和子进程。
需要注意的是,因为 fork() 函数是复制进程的,所以每个子进程都会从父进程复制一份代码和数据。如果在子进程中修改了某些数据,不会影响到其他进程的数据。