The system calls used for low-level process creation are "execlp()" and "execvp()". The "execlp()" call overlays the existing program with the new one, runs that and exits. The original program gets back control only when an error occurs.
execlp(path,file_name,arguments..); //last argument must be NULL
A variant of "execlp()" called "execvp()" is used when the number of arguments is not known in advance.
execvp(path,argument_array); //argument array should be terminated by NULL
The term IPC (Inter-Process Communication) describes various ways by which different process running on some operating system communicate between each other. Various schemes available are as follows:
1. Pipes: One-way communication scheme through which different process can communicate. The problem is that the two processes should have a common ancestor (parent-child relationship). However this problem was fixed with the introduction of named-pipes (FIFO).
2. Message Queues : Message queues can be used between related and unrelated processes running on a machine.
3. Shared Memory: This is the fastest of all IPC schemes. The memory to be shared is mapped into the address space of the processes (that are sharing). The speed achieved is attributed to the fact that there is no kernel involvement. But this scheme needs synchronization.
Various forms of synchronisation are mutexes, condition-variables, read-write locks, record-locks, and semaphores.