注:在未加锁情况下,多进程运行结果具有不确定性,大家运行时候不用拘泥于结果
注:在未加锁情况下,多进程运行结果具有不确定性,大家运行的时候不用拘泥于结果
注:在未加锁情况下,多进程运行结果具有不确定性,大家运行的时候不用拘泥于结果
实验三 进程间通信
1、实验目的
Linux系统的进程通信机构(IPC)允许在任意进程间大批量地交换数据。本实验的目的是使学生了解和熟悉Linux支持的消息通讯机制及管道通信机制。
2、实验预备内容
阅读Linux系统的msg.c、sem.c和shm.c等源码文件,熟悉Linux的通信机制。
3、实验内容
(1)消息的创建,发送和接收。
①使用系统调用msgget(),msgsnd(),msgrcv(),及msgctl()等编制一长度为1k的消息的发送和接收程序。
②观察程序,说明控制消息队列系统调用msgctl()在此起什么作用?
#include<stdio.h>
#include<sys/types.h>
#include<sys/msg.h>
#include<sys/ipc.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include<sys/wait.h>
#define MSGKEY 75/*定义关键词MEGKEY*/
struct msgform/*消息结构*/
{
long mtype;
char mtxt[1024];/*文本长度*/
}msg;
int msgqid,i;
void CLIENT()
{
int i;
msgqid=msgget(MSGKEY,0777);
for(i=10;i>=1;i--)
{
msg.mtype=i;
printf(