Linux进程控制
获取pid
#include<sys/types.h>
#include<unistd.h>
pid_t getpdi(void) // 获取本进程id
pdi_t getppid(vodi) //获取父进程id, 及获取创建子进程的进程id
进程创建
#include<unistd.h>
pid_t fork(void) // 创建子进程
// 调用一次返回两次值
// 1. 父进程中,返回新创建的子进程的id
// 2. 在子进程中, 返回0
// 3. 如果出现错误,返回一个负值
#include<sys/types.h>
#include<unistd.h>
pid_t vfork(void); // 创建子进程
区别:1. fork: 子进程拷贝父进程的数据段
vfork: 子进程与父进程共享数据段
2. fork: 父,子进程的执行顺序不确定vfork: 子进程先运行, 父进程后运行
#include<stdio.h>
#include<unistd.h>
int main()
{
pid_t id;
int i = 0;
id = fork(); // 替换为vfork()比较其运行结果
i += 10;
printf("i = %d\n", i);
return 0;
}
进程等待
#include<sys/types.h>
#include<sys/wait.h>
pid_t wait(int *status); // 阻塞该进程,直到某个子进程退出
exec函数族
exec用被执行的程序替换调用它的程序
区别: fork 创建一个新的进程,产生一个新的PID
exec启动一个新程序,替换原有的进程,因此进程的id不会改变