Linux System Programming

From miki
Revision as of 13:19, 24 January 2011 by Mip (talk | contribs) (Created page with '== Reference == * [http://perl.plover.com/yak/commands-perl/samples/slide001.html System Programming in Perl: The Unix Process Model (slides)] == Process == A process contains: …')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Reference

Process

A process contains:

  • A unique process ID number ('pid')
  • A current working directory ('cwd')
  • A user ID and group ID number (actually more than one of each)
  • An open file table
  • An environment' (just a bunch of string data)
  • A signal table
  • An alarm clock
  • Lots of other equipment

Why fork & exec

  • 2 main primitives of kernel to manage processes:
    • fork: create a new process
    • exec: replace a process's object code with the contents of a file
  • Launching a new process is done in 2 steps:
    1. Fork the current process
    2. In the child process, exec the new file that will then replace the code of the current child but keep environment.
  • Why fork and exec with 2 separate commands?
    Because the child process can alter its environment before it does the exec. For example:
    ps > /tmp/procs                # The child shell will first change the output FD, without ps knowing