Vidyalelo
Computer Science · Q777

Linux

Engineering and GATE · Computer Science · question 777

Q777

What is the output of second program if we run the demo1 first and after that we run demo2 in the different terminal? /*This is demo1.c*/ #include #include #include #include int main() int shm_id; char *addr; struct shmid_ds ds; shm_id = shmget((key_t)1234,10,0666|IPC_CREAT); if(shm_id == -1) perror("shmget"); addr = (char*)shmat(shm_id,NULL,SHM_RND); if(addr == (char *)-1) perror("shmat"); strcpy(addr,"Example"); if (shmdt(addr) != 0) perror("shmdt"); if( shmctl(shm_id,IPC_RMID,0) == -1) perror("shmctl"); return 0; /*This is demo2.c*/ #include #include #include int main() int shm_id; char *addr; struct shmid_ds ds; shm_id = shmget((key_t)1234,10,0666|IPC_CREAT); if(shm_id == -1) perror("shmget"); addr = (char*)shmat(shm_id,NULL,SHM_RND); if(addr == (char *)-1) perror("shmat"); printf("%s ",addr); if (shmdt(addr) != 0) perror("shmdt"); return 0;

A.
the program will print the string "Example"
B.
the program will nothing
Answer
C.
segmentaion fault
D.
none of the mentioned

Answer: Option B

Solution

Answer: Option B
No explanation is given for this question Let's Discuss on Board