- 0
- 0
- 约2.57千字
- 约 37页
- 2026-02-04 发布于湖南
- 举报
第3章嵌入式Linux多任务编程任务的概念15守护进程2进程的概念3进程的状态4父进程和子进程的关系6僵尸进程
第四章嵌入式Linux进程间通信
任务9管道通信编程任务10信号通信编程第4章嵌入式Linux进程间通信任务9信号量通信编程任务10共享内存和消息队列编程
任务9管道通信编程任务10信号通信编程第4章嵌入式Linux进程间通信任务9信号量通信编程任务10共享内存和消息队列编程
Unix
Linux下进程间通信概述UNIX平台进程通信方式01早期进程间通信方式。02ATT的贝尔实验室,对Unix早期的进程间通信进行了改进和扩充,形成了“systemVIPC”,其通信进程主要局限在单个计算机内。03BSD(加州大学伯克利分校的伯克利软件发布中心),跳过了该限制,形成了基于套接字(socket)的进程间通信机制。
Linux下进程间通信概述继承Unix平台上进程通信手段,集合SystemVIPC(贝尔实验室)和socket的进程间通信机制(BSD)的优势。
无名管道(Pipe)及有名管道(namedpipe)1无名管道可用于具有亲缘关系进程间的通信,有名管道,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。Linux下进程间通信概述常用的进程间通信方式
Linux下进程间通信概述信号(Signal)2信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一样的。常用的进程间通信方式
Linux下进程间通信概述消息队列(MessgeQueue)3消息队列是消息的链接表,包括Posix消息队列SystemV消息队列。它克服了前两种通信方式中信息量有限的缺点,具有写权限的进程可以按照一定的规则向消息队列中添加新消息;对消息队列有读权限的进程则可以从消息队列中读取消息。常用的进程间通信方式
Linux下进程间通信概述共享内存(Sharedmemory)4可以说这是最有效的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种通信方式需要依靠某种同步机制,如互斥锁和信号量等。常用的进程间通信方式
Linux下进程间通信概述信号量(Semaphore)5主要作为进程之间以及同一进程的不同线程之间的同步和互斥手段。常用的进程间通信方式
Linux下进程间通信概述套接字(Socket)6这是一种更为一般的进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。常用的进程间通信方式
管道通信无名管道特点它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间)。它是一个半双工的通信模式,具有固定的读端和写端。
管道通信无名管道特点管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read()、write()等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。
管道通信有名管道特点它可以使互不相关的两个进程实现彼此通信。该管道可以通过路径名来指出,并且在文件系统中是可见的。
管道通信有名管道特点①在建立了管道之后,两个进程就可以把它当作普通文件一样进行读写操作,使用非常方便。②FIFO严格地遵循先进先出规则,对管道及FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾,它们不支持如lseek()等文件定位操作。
管道通信无名管道系统调用管道创建和关闭1管道是基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符fds[0]和fds[1],其中fds[0]固定用于读管道,而fd[1]固定用于写管道,这样就构成了一个半双工的通道。
管道通信无名管道系统调用管道创建函数2创建管道可以通过调用pipe()来实现。
管道通信无名管道系统调用管道读写说明3父子进程管道的文件描述符对应关系。
管道通信无名管道系统调用管道读写注意点4只有在管道的读端存在时,向管道写入数据才有意义。否则,向管道写入数据的进程将收到内核传来的SIGPIPE信号(通常为Brokenpipe错误)。
管道通信无名管道系统调用向管道写入数据时,Linux将不保证写入的原子性,管道缓冲区一有空闲区域,写进程就会试图向管道写入数据。如果读进程不读取管道缓冲区中的数据,那么写操作将会一直阻塞。管道读写注意点4
管道通信无名管道系统调用父子进程在运行时,它们的先后次序并不能保证,因此,在为了保证父子进程已经关闭了相应的文件描述符,可在两个进程中调用sleep()函数。管道读写注意点4
管道通信标准流管道标准流管道函数说明1与Linux的文件操作中有基于文件流的标准I/O操作一样,管道的操作也支持基于文件流的模式
原创力文档

文档评论(0)