http://www.perlmonks.org?node_id=829762


in reply to Re: difference between exec, system, fork, pipe, syscall and eval
in thread difference between exec, system, fork, pipe, syscall and eval

- exec is used to execute the given process by replacing the current process.
- If the given process get executed successfully then exec will not return the value.
- exec returns the value in case of failure only.

- System is also doing the same thing as exec but system returns value in both success and failure cases.
- And parent process waits for the child process to complete.
- System() runs the command through a shell,while exec() runs the command directly.

- fork is used to create a new process(child process).
- And it is returning the PID of child to parent and zero to child if the fork is successful.
- The difference between the fork and exec is exec replaces the current process but fork doesn't.

- pipe is used for communicating between two processes.
- We can use both named and nameless pipes.
- It returns open a pair of pipes.
- In one end we can write.
- And in another end we can read the content.

- syscall is used to call the system call which is specified as a first argument.
- Remaining elements are the arguments to the system call.

For more details visit the following link also. Perl IPC