实验九 System V进程间通信
实验学时:4 实验类型:设计
一、目的与任务
目的:了解掌握操作系统消息队列、信号量的特点与功能,学会借助消息队列、信号量的功能函数进行编程。
任务:利用C语言指令编写程序调用消息队列、信号量函数,完成相应功能。 二、内容、要求与安排方式 1、实验内容与要求:
1)利用消息队列、信号量进行进程间的通信 //创建消息队列 #include
int main(int argc,char * argv[]) { int rtn; int msqid;
key_t key; mymsg msginfo; key = ftok(\ if(key == -1){ perror(\ exit(1); }
msqid = msgget(key,IPC_CREAT | IPC_EXCL | 0644); if(msqid == -1){
perror(\ exit(2); } return 0; }
2)利用共享内存进行进程间的数据共享。 //创建共享内存,向共享内存中写入数据 #include
#define SHMSIZE 4096
int main(int argc,char * argv[]) {
int shmid; key_t key; void * shmptr; key = ftok(\ if(argc != 2){ }
if(key == -1){ }
shmid = shmget(key,SHMSIZE,IPC_CREAT | IPC_EXCL | 0600); if(shmid == -1){ }
printf(\
perror(\exit(1);
perror(\exit(1);
printf(\exit(1);
shmptr = shmat(shmid,0,0); if(shmptr == (void *) -1){ }
memcpy(shmptr,argv[1],strlen(argv[1]) + 1); if(shmdt(shmptr) == -1){ } return 0; }
perror(\exit(1);
perror(\exit(1);