一.ftok函数
key_t ftok( char * fname, int id )
//系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。
参数:
fname就时你指定的文件名(该文件必须是存在而且可以访问的)。
id是子序号, 虽然为int,但是只有8个比特被使用(0‐255)。
返回值:
当成功执行的时候,一个key_t值将会被返回,否则 ‐1 被返回。
二.消息队列进程间半双工通信
写一个msg_write用来写,一个msg_read用来读,这两个之间通信需要用一个id,就需要上面所说的ftok函数获取
ftok()函数里的第一个参数可以随便写一个,第二个参数0~255写一个
msgid就用msgget()函数获取,IPC_CREAT|0755是用于如果没有建立相对应消息队列时创建一个
msg_write
msg_read
三.消息队列进程间全双工通信
全双工通信通过父子进程实现,建立一个服务端(write),一个客户端(read)
在服务端文件中生成消息队列只有用fork函数生成父子进程
服务端时父进程写,子进程读
父进程写100类型的消息,子进程读200类型的消息
客户端与服务端相反过来,父进程读,子进程写
子进程写200类型的消息,父进程读100类型的消息
之后就可以进行全双工通信了,都可以收发消息,就相当于两个qq之间的对话