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

本文介绍了Linux下多进程编程的概念,包括进程的组成、fork()函数的使用、进程ID获取、exec函数家族的功能,以及进程间通信的常见方式如管道、共享内存和套接字等。通过示例和详细解释,阐述了如何在C语言中实现和管理进程。
最低0.47元/天 解锁文章
2458

被折叠的 条评论
为什么被折叠?



