#include #include #include #include #include #include int main(void) { key_t key1; int semid1; static struct sembuf Decr = {0,-1,SEM_UNDO}; static struct sembuf Incr = {0,1,SEM_UNDO}; key1 = ftok("reader.c", 'X'); semid1= semget(key1,2,IPC_CREAT | 0600); semctl(semid1,0,SETVAL,1); semctl(semid1,1,SETVAL,1); int i; for(i = 0; i<5; i++){ semctl(semid1,0,SETVAL,0); semop(semid1,&Decr,1); printf("read\n"); sleep(2); printf("done\n"); semctl(semid1,0,SETVAL,1); semop(semid1,&Incr,1); sleep(4); } return 0; }