📄 write.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 + -