Try this to fix your lab5.c program: 1. Name your semaphores with a unique name. sem1 = sem_open("/myname1", O_CREAT, 0644, 0); sem2 = sem_open("/myname2", O_CREAT, 0644, 1); note: do not use myname1 and myname2. 2. At end of parent, call sem_close() on both semaphores. Then call sem_unlink() on each semaphore name. sem_close(sem1); sem_close(sem2); sem_unlink("/myname1"); sem_unlink("/myname2"); 3. Run cleanup.sh to clean your shared memory.