Linux多进程

基本函数

fork()函数

用于创建一个进程,所创建的进程复制父进程的代码段/数据段/BSS段/堆/栈等所有用户空间信息;在内核中操作系统重新为其申请了一个PCB,并使用父进程的PCB进行初始化。

1
pid_t fork();		// pid_t实际上时int类型

fork时可以看作==父进程在fork执行的位置进行了一次分裂,分裂出一个子进程==。父进程从fork的返回值得到子进程的pid,子进程在fork位置得到返回值0,并且从fork的下一句开始执行。

  • 使用实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
pid_t fpid; //fpid表示fork函数返回的值
int count = 0;
fpid = fork();
if (fpid < 0)
cout << "error in fork!" << endl;
else if (fpid == 0) {
cout << "i am the child process, my process id is " << getpid() << endl;
cout << "我子进程" << endl;
count++;
} else {
cout << "i am the parent process, my process id is " << getpid() << endl;
cout << "我是父进程" << endl;
count++;
}
cout << "统计结果是: " << count << endl;
return 0;
}

getpid()gitppid()

  • gitpid(): 获取当前进程的pid
  • gitppid(): 获取当前进程的父进程的pid

进程间通信