MCQ Practice

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("%sn",addr); if (shmdt(addr) != 0){ perror("shmdt"); } return 0; }

A

the program will print the string "Example"

B

the program will nothing

C

segmentaion fault

D

none of the mentioned

Correct Answer: B