无名管道:用于父子进程之间的通信
使用pipe()函数创建管道
在进程1中进行写操作,此时关闭读描述,使用write( pipes[1], &c, 1)将c内容写入pipes[1](pipe()中的读描述)。
此时管道中已由pipes[1]传入pipes[0],即在进程2中需要使用read(pipes[0],&c,1)将写入管道内的内容读出并赋值给地址c
有名管道:用于任何进程之间通信,传输速度较快,可达到10M每秒。
使用mkfifo(fifo_name, 0777)创建管道并赋予权限,此时fifo_name为管道文件,该方式是通过文件的方式进行传输,所以无论是传入还是传出,首先要使用open打开fifo_name文件,然后将需要传输内容写入fifo_name(write函数),或者从fifo_name中读取数据(read函数)。
消息队列:可以对其权限进行相关设置
首先,每个进程都需要通过msgget()函数建立一个消息队列,建立方法如下:
msgget((key_t)1234, 0666 | IPC_CREAT)
其中,第一个参数为消息队列的标识码,每个进程建立的消息队列的标识码必须相同
需要建立一个标准结构体,作为消息队列的缓冲区,如下:
struct msg_st
{
long int msg_type; //
char text[MAX_TEXT];
};
使用msgsnd()函数发送数据,若无接收,则一