一、system v与posix
二、 消息队列
1. system v消息队列
Linux消息队列编程
ipcs 命令查看消息队列
调用msgsnd一次,往消息队列发送一条消息。
调用msgrcv一次,从消息队列中取出一条消息。
keyt_t key = ftok(const char *path ,int id);
实验测试,id如果不超过127,返回key是正值。如果大于128,返回负值。但这个负值,仍然是成功ftok的返回值。仍然可以用来通信。path是一个已经存在的文件,任何都可以,比如/tmp/, /mnt都行。
所以判断ftok有没有成功,应该是与-1比较,而不是判断小于0.
root@lipenghui-virtual-machine:/mnt/hgfs/vmshare# ./rcv
key = -2128805887
msgrcv success, ret = 1024
rcv type: 17 msg:[di san tiao xiao xi fa song]
1. ftok
生成key的文件必须是已经存在的。不然会失败 ftok error: No such file or directory。
key_t ftok(const char *pathname, int proj_id);
RETURN VALUE
On success, the generated key_t value is returned. On failure -1 is returned, with errno
indicating the error as for the stat(2) system call.
2. posix消息队列
三、信号量
进程间通信 - 信号量
https://blog.youkuaiyun.com/persistence_s/article/details/72847959
2. posix信号量
https://www.cnblogs.com/han-bing/p/6166391.html
有名信号量sem_open和内存信号量sem_init创建信号量的区别
四、共享内存
1. system v共享内存
2. posix共享内存和system v
system v和posix的共享内存对比 & 共享内存位置