利用fork获取当前进程号和其子进程号
时间: 2023-04-12 12:00:21 浏览: 64
可以使用getpid()函数获取当前进程号,使用fork()函数创建子进程并获取子进程号,示例代码如下:
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = getpid();
printf("当前进程号:%d\n", pid);
pid_t child_pid = fork();
if (child_pid == 0) {
printf("子进程号:%d\n", getpid());
}
return 0;
}
相关问题
乌班图fork()父进程和子进程创建
在Ubuntu中,fork()函数可以用于创建子进程,其语法如下:
```c
#include <unistd.h>
pid_t fork(void);
```
fork()函数会创建一个新的子进程,该子进程是父进程的副本。在父进程中,fork()函数的返回值是子进程的PID(进程ID),在子进程中,fork()函数的返回值为0。如果fork()函数返回值为-1,则表示创建子进程失败。
下面是一个简单的例子,演示如何使用fork()函数创建父进程和子进程:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid;
pid = fork();
if (pid == -1) {
printf("Failed to create child process!\n");
return 1;
}
if (pid == 0) {
printf("This is child process. PID=%d\n", getpid());
} else {
printf("This is parent process. PID=%d, child PID=%d\n", getpid(), pid);
}
return 0;
}
```
在上面的例子中,首先调用fork()函数创建子进程,然后判断fork()函数的返回值。如果返回值为-1,则表示创建子进程失败;如果返回值为0,则表示当前进程是子进程,输出子进程的PID;如果返回值大于0,则表示当前进程是父进程,输出父进程的PID和子进程的PID。
运行上面的程序,可以看到如下输出:
```
This is parent process. PID=1234, child PID=1235
This is child process. PID=1235
```
可以看到,fork()函数成功创建了一个子进程,该子进程和父进程输出的PID不同。
父进程和子进程中输出进程号
在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;
}
```