Examveda
Examveda

What is the output of this pogram?
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/sem.h>
 
static int sem_p(void);
static int sem_v(void);
union semun{
    int val;
    struct semid_ds *buf;
    unsigned short array;
};
int sem_id;
struct semid_ds myds;
struct sembuf mybuf;
union semun myun;
static int sem_p(void)
{
    mybuf.sem_num = 0;
    mybuf.sem_op = -1;
    mybuf.sem_flg = SEM_UNDO;
    semop(sem_id,&mybuf,1);
}
static int sem_v(void)
{
    mybuf.sem_num = 0;
    mybuf.sem_op = 1;
    mybuf.sem_flg = SEM_UNDO;
    semop(sem_id,&mybuf,1);
}
int main()
{
    int wfd, rfd;
    sem_id = semget((key_t)911,1,0666 | IPC_CREAT);
    myun.val = 1;
    semctl(sem_id,0,SETVAL,myun);
    sem_p();
    printf("Example\n");
    sem_v();
    semctl(sem_id,0,IPC_RMID,myun);
    return 0;
}

A. this program will print the string "Example"

B. this process will remain block

C. this program will print the string "Example" & process will remain block

D. none of the mentioned

Answer: Option A


This Question Belongs to Computer Science >> Linux

Join The Discussion

Related Questions on Linux