unistd.h fork() : Creates a child process. execvp() : Replaces the current code base of a process with a new code base. exit() : Terminates a process. sleep() : Suspends the execution of a process for an interval. close() : Closes a file descriptor. dup2() : Adjusts the second file descriptor so that it refers to an open file description that is referred by the first file descriptor. After successful return both file descriptors refer the same open file description. pipe() : Creates an anonymous pipe to be used as a communication channel between calling process (parent) and a child process. fcntl.h open() : Opens or creates a file. sys/wait.h wait() : Suspends the execution of a process until one of its child processes terminates. waitpid() : Suspends the execution of a process until the specified child process terminates. pthread.h pthread_create() : Creates a new thread. pthread_exit() : Terminates thread execution itself. pthread_cancel() : Cancels the execution of another thread by the caller thread. pthread_join() : Caller thread waits for the termination of another thread. pthread_mutex_init() : Initializes a mutex. pthread_mutex_destroy() : Destroys a mutex. pthread_mutex_lock() : Locks a mutex. pthread_mutex_unlock() : Unlocks a mutex. pthread_cond_init() : Initializes a condition variable. pthread_cond_destroy() : Destroys a condition variable. pthread_cond_wait() : Thread execution waits on a condition variable by unlocking related mutex. pthread_cond_signal() : Signals a condition to wake up at least one waiting thread. pthread_cond_broadcast(): Broadcasts or signals a condtion to wake up all waiting threads. semaphore.h sem_init() : Initializes an unnamed semaphore. sem_destroy() : Destroys an unnamed semaphore. sem_wait() : Waits or suspends the execution of a process if semaphore value is already zero. Otherwise, decrements semaphore value and proceeds. sem_post() : Increments semaphore value and signals the waiting process to proceed.