父进程和子进程中输出进程号
时间: 2023-09-26 09:11:16 浏览: 127
在C语言中,可以使用系统调用getpid()来获取当前进程的进程号。在父进程中,可以直接调用getpid()函数来输出父进程的进程号。在创建子进程后,可以使用系统调用fork()返回的值来判断当前进程是父进程还是子进程,如果返回值大于0,则是父进程,可以直接输出父进程的进程号;如果返回值等于0,则是子进程,可以调用getpid()函数来输出子进程的进程号。以下是示例代码:
```
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid = fork();
if (pid > 0) {
// 父进程
printf("父进程的进程号:%d\n", getpid());
} else if (pid == 0) {
// 子进程
printf("子进程的进程号:%d\n", getpid());
} else {
// 创建子进程失败
printf("创建子进程失败!\n");
}
return 0;
}
```
相关问题
用for循环创建三个子进程,实现三次循环创建三个子进程。并在父进程和子进程中输出进程号
```python
import os
for i in range(3):
pid = os.fork()
if pid == 0:
print("Child process pid: ", os.getpid())
break
else:
print("Parent process pid: ", os.getpid())
```
输出:
```
Parent process pid: 1234
Child process pid: 1235
Parent process pid: 1234
Child process pid: 1236
Parent process pid: 1234
Child process pid: 1237
```
在linux环境下,用for循环创建三个子进程,实现三次循环创建三个子进程。并在父进程和子进程中输出进程号
```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秒,方便观察进程号输出
阅读全文