linux进程间通信函数
1. pipe系统调用的使用格式
#include<unistd.h>
int pipe(int fd[2])
功能:创建一个简单的管道,若成功则为数组fd分配两个文件描述符,其中fd[0]用于读取管道,fdp[1]用于写入管道。
返回值:成功返回0,失败返回-1。
2. 命名管道:mkfifo系统调用的使用格式:
#include<sys/types.h>
#include<sys/stat.h>
功能:创建命名管道
返回:若成功则为0,若出错则为-1.
3.信号量:
semget()系统调用的使用格式:
#include<sys/sem.h>
功能:创建一个新的信号量或取得一个新的键值
返回值:成功返回信号量标志码,失败返回-1。
semop()系统调用的使用格式:
#include<sys/sem.h>
功能:用户改变信号量的值。
返回值:成功返回0,否则-1.
4.共享内存
shmget()系统调用的使用格式:
#include<sys.shm.h>
功能:创建共享内存。
返回值:成功返回共享内存标识码,失败返回-1.
shmat()的使用格式:
#include<sys.shm.h>
功能:允许进程访问一块共享内存(共享内存刚创建时不能使用)。
返回值:成功返回共享内存的起始地址,失败返回-1.
shmdt()的使用格式:
#include<sys/shm.h>
功能:释放共享内存。
返回值:成功时返回0.失败时返回-1.
shmctl()的使用方法:
#include<sys/shm.h>
功能:共享内存控制函数。
返回值:成功返回0,失败返回-1。
5.消息队列:
msgget()的使用格式:
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
功能:创建一个新的消息队列,或者希望存取一个已经存在的消息队列。
返回值:成功返回消息队列标识符,失败返回-1.
msgsnd()的头文件:
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
功能:往队列中发送一条消息。
返回值:成功返回0,错误返回-1.
msgrcv()的头文件:
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
功能:读取消息,从消息队列中取走消息
返回值:成功返回0,错误返回-1.
msgctl()的头文件:
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
功能:对消息队列的操作
返回值:成功返回0,错误返回-1.
6. 信号与信号机制
signal函数的头文件:
#include<signal.h>