title: What is the need for C startup routine?
body: <p>Quoting from one of the unix programming books,</p>
  
  <blockquote>
    <p>When a C program is executed by the
    kernelby, one of the exec functions
    calls special <code>start-up routine</code>. This
    function is called before the main
    function is called. The executable
    program file specifies this routine as
    the starting address for the program;
    this is set up by the link editor when
    it is invoked by the C compiler. This
    start-up routine takes values from the
    kernel the command-line arguments and
    the environment and sets things up so
    that the main function is called as
    shown earlier.</p>
  </blockquote>
  
  <p>Why do we a need a middle man <code>start-up routine</code>. The exec function could have straightway called the main function and the kernel could have directly passed the command line arguments and environment to the main function. Why do we need the start-up routine in between?</p>