全球旧事资料 分类
进程是一个具有一定独立功能的程序的一次运行活动。一组并发进程按一定的顺序执行的过程称为进程间的同步。i
cludesystypeshi
cludeu
istdhpid_tgetpidvoid获取本进程ID。pid_tgetppidvoid获取父进程ID。i
cludeu
istdhpid_tforkvoid功能:创建子进程fork的奇妙之处在于它被调用一次,却返回两次,它可能有三种不同的返回值:1在父进程中,fork返回新创建的子进程的PID;2在子进程中,fork返回0;3如果出现错误,fork返回一个负值在pidfork之前,只有一个进程在执行,但在这条语句执行之后,就变成两个进程在执行了,这两个进程的共享代码段,将要执行的下一条语句都是ifpid0。两个进程中,原来就存在的那个进程被称作“父进程”,新出现的那个进程被称作“子进程”,父子进程的区别在于进程标识符(PID)不同。pid_tvforkvoid功能:创建子进程。区别:1fork子进程拷贝父进程的数据段vfork子进程与父进程共享数据段2fork父、子进程的执行次序不确定vfork子进程先运行,父进程后运行
fexec用被执行的程序替换调用它的程序。区别:fork创建一个新的进程,产生一个新的PID。exec启动一个新程序,替换原有的进程,因此进程的PID不会改变。Exec详细内容参看《嵌入式li
ux应用开发标准教程》为什么进程间需要通信?1、数据传输一个进程需要将它的数据发送给另一个进程。2、资源共享多个进程之间共享同样的资源。3、通知事件一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。4、进程控制有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变。现在Li
ux使用的进程间通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信号(sig
al)3、消息队列4、共享内存5、信号量6、套接字(socket)
f管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。数据被一个进程读出后,将被从管道中删除,其它读进程将不能再读到这些数据。管道提供了简单的流控制机制,进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程将阻塞。管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者可()用于运行于同一系统中的任意两个进程间的通信。无名管道由pipe函数创建:i
tpipei
tfiledis2;当一个管道建立时,它会创建两r
好听全球资料 返回顶部