摘要: LINUX下进程间通信的方式主要有:管道、有名管道、消息队列、信号量、共享内存,此外还有信号和套接字。管道只能用于亲缘进程(如父子进程)的通信。有名管道可用于非亲缘进程通信。信号量主要用于同步(线程同步与进程同步分别用两组函数操作信号量)。消息队列克服了信号量传递信息少、管道只能传送无类型字节流的弱点。信号类似于软件中断,用于事件通知。共享内存是最快的IPC方式,配合其他方式使用(一般是配合信号量)。1、管道管道是单向的传输方式,创立管道后系统分配一定大小的缓冲区,数据从输入管道进入缓冲区的头位置,输出管道从管道的未位置取出数据。fd[0]为读管道,fd[1]为写管道,读前关闭写管道,写前关闭 阅读全文
posted @ 2013-07-02 16:06 iyjhabc 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 信号是一种软件中断,也是进程间唯一的异步通信方式。信号可通过硬件发送,如键入CTRL+C,或者程序发送。软件可通过signal函数捕捉信号,针对信号编写信号处理函数,进行异步操作。在终端可用kill命令发送信号。信号有优先级,高优先级的首先处理。1、signal(int signum,void (*f)(int))第一个参数为需要处理的信号,第二个参数为信号处理函数的指针。函数要求必须含一个int参数和返回void。#include "signal.h"void sig_process(int sig_no){ printf("signal has been re 阅读全文
posted @ 2013-07-02 11:38 iyjhabc 阅读(1984) 评论(0) 推荐(0) 编辑