semaphore.c