当前位置: 技术问答>linux和unix
要实现message进程通信的send()和receive()在linux中应该添加什么头文件或导入怎样的库呢?
来源: 互联网 发布时间:2016-07-11
本文导语: 最近在学《现在操作系统》那本书,对于IPC部分,想要在linux下实现一组primitive----send(destination,&message)和receive(source,&message),不过发现linux没有自带这些函数,请问应该添加什么头文件或导入怎样的库呢? 同...
最近在学《现在操作系统》那本书,对于IPC部分,想要在linux下实现一组primitive----send(destination,&message)和receive(source,&message),不过发现linux没有自带这些函数,请问应该添加什么头文件或导入怎样的库呢?
同时令一对primitive的实现方式也要请大侠们赐教,就是semaphore中的down()和up()函数
感激不尽。
同时令一对primitive的实现方式也要请大侠们赐教,就是semaphore中的down()和up()函数
感激不尽。
|
Linux下消息队列和信号量都实现了POSIX和Sys V两种,具体用法你可以man相应的函数
POSIX消息队列
#include
mqd_t mq_send(mqd_t mqdes, const char *msg_ptr,size_t msg_len, unsigned msg_prio);
ssize_t mq_receive(mqd_t mqdes, char *msg_ptr,size_t msg_len, unsigned *msg_prio);
Sys V消息队列
#include
#include
#include
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg);
POSIX信号量
#include
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
SysV信号量
#include
#include
#include
int semop(int semid, struct sembuf *sops, unsigned nsops);
POSIX消息队列
#include
mqd_t mq_send(mqd_t mqdes, const char *msg_ptr,size_t msg_len, unsigned msg_prio);
ssize_t mq_receive(mqd_t mqdes, char *msg_ptr,size_t msg_len, unsigned *msg_prio);
Sys V消息队列
#include
#include
#include
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg);
POSIX信号量
#include
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
SysV信号量
#include
#include
#include
int semop(int semid, struct sembuf *sops, unsigned nsops);