Linux下多进程编程(C语言)
一、 进程简介
1、进程是程序的执行。程序是静态的,进程是动态的。
2、进程在内存中有三部分组成:数据段、堆栈段和代码段。
代码段:就是存放程序代码的数据,如果有数个进程运行同一个一个程序,那么它们就可以使用同一个代码段(代码段是可以共享的);
堆栈段:存放的是子程序的返回地址、参数以及程序的局部变量,主要是保存进程的执行的环境,这里用到了栈先进后出的特性,可以看做具有记忆上一次执行的环境。
数据段:存放程序的全局变量 、常数
//动态数据分配的数据空间
系统如果同时运行数个相同的程序,它们之间就不能使用同一个堆栈段和数据段,但是可以使用同一个代码段(代码段是可以共享的)
二、所要用到的函数
1 、fork() 功能:产生新的进程
1.1 依据返回值可以判断产生的是父进程还是子进程:
(1)== 0 子线程 ;(2)>0 父进程(此时返回值为子进程的进程号) ;(3) < 0 创建进程失败
1.2 父进程的进程号要比子进程的进程号小,因为父进程要比子线程早产生
1.3 进程的三个组成部分中代码段是父子进程共享的(同一个程序中),系统会复制数据段和堆栈段给子进程,父子进程会独立运行,互不影响。
1.4 fork函数执行一次,产生一个新进程,复制数据段、堆栈段&
一、 进程简介
1、进程是程序的执行。程序是静态的,进程是动态的。
2、进程在内存中有三部分组成:数据段、堆栈段和代码段。
代码段:就是存放程序代码的数据,如果有数个进程运行同一个一个程序,那么它们就可以使用同一个代码段(代码段是可以共享的);
堆栈段:存放的是子程序的返回地址、参数以及程序的局部变量,主要是保存进程的执行的环境,这里用到了栈先进后出的特性,可以看做具有记忆上一次执行的环境。
数据段:存放程序的全局变量 、常数
//动态数据分配的数据空间
系统如果同时运行数个相同的程序,它们之间就不能使用同一个堆栈段和数据段,但是可以使用同一个代码段(代码段是可以共享的)
二、所要用到的函数
1 、fork() 功能:产生新的进程
1.1 依据返回值可以判断产生的是父进程还是子进程:
(1)== 0 子线程 ;(2)>0 父进程(此时返回值为子进程的进程号) ;(3) < 0 创建进程失败
1.2 父进程的进程号要比子进程的进程号小,因为父进程要比子线程早产生
1.3 进程的三个组成部分中代码段是父子进程共享的(同一个程序中),系统会复制数据段和堆栈段给子进程,父子进程会独立运行,互不影响。
1.4 fork函数执行一次,产生一个新进程,复制数据段、堆栈段&