#include <stdio.h>
#include <unistd.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <string.h>
int main()
{
int shmid;
char *shared_memory;
char buff[100];
shmid = shmget((key_t)2345, 1024, 0666 | IPC_CREAT);
if (shmid == -1) {
perror("shmget failed");
return 1;
}
printf("Key of shared memory is %d\n", shmid);
shared_memory = (char *)shmat(shmid, NULL, 0);
if (shared_memory == (char *)-1) {
perror("shmat failed");
return 1;
}
printf("Enter some data to write to shared memory: ");
read(0, buff, 100);
strcpy(shared_memory, buff);
printf("You wrote: %s\n", shared_memory);
return 0;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzeXMvc2htLmg+CiNpbmNsdWRlIDxzeXMvaXBjLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCgppbnQgbWFpbigpCnsKICAgIGludCBzaG1pZDsKICAgIGNoYXIgKnNoYXJlZF9tZW1vcnk7CiAgICBjaGFyIGJ1ZmZbMTAwXTsKCgogICAgc2htaWQgPSBzaG1nZXQoKGtleV90KTIzNDUsIDEwMjQsIDA2NjYgfCBJUENfQ1JFQVQpOwoKCiAgICBpZiAoc2htaWQgPT0gLTEpIHsKICAgICAgICBwZXJyb3IoInNobWdldCBmYWlsZWQiKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCgogICAgcHJpbnRmKCJLZXkgb2Ygc2hhcmVkIG1lbW9yeSBpcyAlZFxuIiwgc2htaWQpOwoKCiAgICBzaGFyZWRfbWVtb3J5ID0gKGNoYXIgKilzaG1hdChzaG1pZCwgTlVMTCwgMCk7CgoKICAgIGlmIChzaGFyZWRfbWVtb3J5ID09IChjaGFyICopLTEpIHsKICAgICAgICBwZXJyb3IoInNobWF0IGZhaWxlZCIpOwogICAgICAgIHJldHVybiAxOwogICAgfQoKCiAgICBwcmludGYoIkVudGVyIHNvbWUgZGF0YSB0byB3cml0ZSB0byBzaGFyZWQgbWVtb3J5OiAiKTsKICAgIHJlYWQoMCwgYnVmZiwgMTAwKTsKCgogICAgc3RyY3B5KHNoYXJlZF9tZW1vcnksIGJ1ZmYpOwoKCiAgICBwcmludGYoIllvdSB3cm90ZTogJXNcbiIsIHNoYXJlZF9tZW1vcnkpOwoKCiAgICByZXR1cm4gMDsKfQo=