⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 write.c

📁 进程间通信的实验代码
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <signal.h>#include <sys/msg.h>#include <sys/ipc.h>#include "message.h"#define SEGSIZE 	sizeof(struct mymsgbuf)
//本程序并没有按要求,仅演示了数据的读写方法。
//按要求,1K的数据应该是对文件进行处理。
//即需要打开文件、读取文件内容到缓冲区、写入共享存储区main(){	struct mymsgbuf studentinfo;	int shmid;	key_t key;	char *segptr;	key=ftok(".",'S');	if((shmid = shmget(key, SEGSIZE, IPC_CREAT|IPC_EXCL|0666)) == -1)	{		printf("Shared memory segment exists - opening as client\n");		/* Segment probably already exists - try as a client */		if((shmid = shmget(key, SEGSIZE, 0)) == -1)		{			perror("shmget");			exit(1);		}	}	else	{		printf("Creating new shared memory segment\n");	}	/* Attach (map) the shared memory segment into the current process */	if((segptr = shmat(shmid, 0, 0)) == -1)	{		perror("shmat");		exit(1);	}	for (;;)        {	   	printf("please enter your id:");		scanf("%s",studentinfo.id);	   	printf("please enter your name:");		scanf("%s",studentinfo.name);	   	printf("please enter your age:");		scanf("%s",&studentinfo.age);	   	printf("please enter your E_mail:");		scanf("%s",studentinfo.e_mail);	           printf("your Info:\n");	   	printf("\tid:\t %s\n",studentinfo.id);	   	printf("\tname:\t %s\n",studentinfo.name);	   	printf("\tage:\t %d\n",studentinfo.age);	   	printf("\tE_mail:\t %s\n\n",studentinfo.e_mail);		//write data to share memory.		memcpy(segptr,&studentinfo,sizeof(struct mymsgbuf));        }    shmctl(shmid,IPC_RMID,NULL);	exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -