What after exec() in ls command: Is the parent process printing the output to the console or the child?
1
vote
4
answers
10497
views
I have a simple doubt on execution of the command
ls
. As per my understanding from the research I have done on the internet, I understood the below points.
1. When we type ls
command shell interprets that command.
2. Then the shell process forks and creates the child process and the parent (shell) executes the wait()
system call, effectively putting itself to sleep until the child exits.
3. Child process inherits all the open file descriptors and the environment.
4. The child process (shell) executes an exec()
of the ls
program, causing the ls
binary being loaded from the disk (filesystem) and being executed in the same process.
5. When the ls
program runs to completion, it calls exit()
, and the kernel sends a signal to its parent indicating the child has terminated.
My doubt starts from here onwards, as soon as ls
finishes its tasks; does it send the result back to the parent process, or does it display the output to the screen?
If it sends the output back to parent, then is it using pipe()
implicitly?
Asked by Subi Suresh
(513 rep)
Mar 14, 2013, 06:28 PM
Last activity: Nov 28, 2023, 04:46 PM
Last activity: Nov 28, 2023, 04:46 PM