Linux下复杂PC问题——多进程编程/信号量通信/共享存储区

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下复杂PC问题——多进程编程/信号量通信/共享存储区相关的知识,希望对你有一定的参考价值。

进程相关函数

pid_t fork();

头文件unistd.h,sys/types.h

作用:建立一个新进程(子进程),子进程与原进程(父进程)共享代码段,并拥有父进程的其他资源(数据、堆栈等)的一个副本。(由于继承了父进程的所有状态,子进程将从fork处往下运行)。(说明:子进程继承父进程的所有数据,但执行的时候,两者的数据是分开的,相互不再影响。fork函数复制的数据段和堆栈,只是"逻辑"上的,并非"物理"上的,也就是说,实际执行fork时,物理空间上两个进程的数据段和堆栈段都还是共享着的,当有一个进程写了某个数据时,这时两个进程之间的数据才有了区别,系统就将有区别的"页"从物理上也分开。系统在空间上的开销就可以达到最小。)

参数:无

返回值pid_t类型,是int的别名。若成功调用,返回两个值。fork()函数在父进程中返回子进程的进程ID,而在子进程中返回0。这一特性可用于使进程识别自身是父进程或是子进程。如果出现错误,返回负值。

 

信号量相关函数 

以上是关于Linux下复杂PC问题——多进程编程/信号量通信/共享存储区的主要内容,如果未能解决你的问题,请参考以下文章

Python网络编程(进程通信信号线程锁多线程)

请教一个Linux下C语言的进程间的信号问题

linux用户空间 - 多进程编程(三)

linux高级编程基础系列:线程间通信

Linux系统编程-进程间通信(管道)

多进程多线程