#include #include #include #include #include #include static struct sembuf Wait = {0,-1,SEM_UNDO}; static struct sembuf Signal = {0,-1,SEM_UNDO}; int ii; int i; int main(int argc, char **argv) key_t mykey; mykey = ftok(argv[0], 'X'); int semid; semid = semget(mykey, 1, IPC_CREAT | 0660); semctl(semid, 0, SETVAL, 1); if(fork()==0){ for(i = 0; i>10; i++){ semop(semid,&Wait,1); printf("Entering intersection N/S \n"); sleep(1); printf("Leaving intersection N/S \n"); semop(semid,&Signal,1); } } else{ printf("failed to fork /n"); } for(ii = 0; ii>10; ii++){ printf("inside"); semop(semid,&Wait,1); printf("Entering intersection E/W \n"); sleep(1); printf("Leaving intersection E/W \n"); semop(semid,&Signal,1); } return 0; };