文件 I/O(Input/Output)
1.进程间的通信方式 6种
管道(有名和无名)
有名管道:有名字 有无亲缘关系都能使用 FIFO 先进先出
虽然看见名字了,但是不属于磁盘上的文件系统,存在内存当中
不支持lseek操作,不存在文件指针
单工通信 (半双工通信)
固定的读端和写端
int ret = mkfifo("/home/linux/bbb",0666);
无名管道: 在文件系统看不见,有亲缘关系间使用
特点:
int fd[2];
int ret = pipe(fd);
//fd[0] 读端
//fd[1] 写端
信号
标签:进程间通信唯一的异步通信机制
异步:什么时候来不知道,也没有任何准备
对于信号响应的处理方式 有三种 假设来了一个SIGQUIT信号
(1) 捕获信号,去执行信号处理函数
void fun(int num)//捕获到SIGQUIT信号,自动执行fun函数
{
;//num的值,就是捕获的那个信号的编号
}
signal(SIGQUIT, fun);
(2) 忽略信号
signal(SIGQUIT, SIG_IGN);
(3) 执行默认操作(缺省操作)
signal(SIGQUIT, SIG_DFL);
发送信号:有两个函数 kill raise
kill();//可以给任意进程,发送任意一个信号
kill(2222, SIGCHLD);//给2222进程,发送 SIGCHLD
kill(3333, SIGALRM);//给3333进程,发送 SIGALRM
raise();//只能给自己当前进程发送任意一个信号
raise(SIGQUIT);
raise(SIGINT);
alarm(3) //信号 3s之后自动释放SIGALRM信号
SIGCHLD //信号 在子进程结束之后,自动给父进程发送这个信号
信号量
共享内存
消息队列
socket套接字