[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: how is "exec" executed by a shell?
thanx, that explains it.
-mandeep
On Mon, 2005-01-10 at 13:53, karthick.sundararajan@xxxxxxxxx wrote:
> Hi,
>
> The exec shell built-in is like the exec group of system calls
> (generally referred to as the exec system call). Before we use the exec
> system call, we do a fork. The code is generally like this:
>
> int main()
> {
> int pid=fork();
>
> if (0 == pid)
> {
> // Child process
> // exec system call can be used here
> }
> else if (-1 == pid)
> {
> // Error condition
> // Exit from here
> }
> else
> {
> // Parent process
> // exec not called here
> // wait for pid
> }
> exit(0);
> }
>
> Note that the child process is getting created by fork. The exec call on
> the other hand replaces the current process with the process that has
> been passed as argument to it. Thus the "parent" process (if we can use
> that term) does not exist anymore.
>
> The exec shell built-in also works in the same way. It replaces the
> currently executing process with it's argument. So when we exit from the
> new process, there is no caller we can return to and so the shell
> closes. To escape from this, open a new sheel in which you execute the
> command.
>
> A similar effect can be seen when we source a script that uses the
> "exit" shell built-in.
>
> Cheers,
> Karthick S.
>
>
> -----Original Message-----
> From: kernelnewbies-bounce@xxxxxxxxxxxx
> [mailto:kernelnewbies-bounce@xxxxxxxxxxxx] On Behalf Of Mandeep Sandhu
> Sent: Monday, January 10, 2005 13:10
> To: kernelnewbies
> Subject: Re: how is "exec" executed by a shell?
>
>
> On Sun, 2005-01-09 at 07:47, Jim Bauer wrote:
> > On Saturday 08 January 2005 16:10, Jaydeep Chokshi wrote:
> > >
> > > Now My confusion is as follows,
> > >
> > > $exit
> > >
> > > doin this shell exits right, How come shell shold exit because 1st
> > > shell forked and had child process to execute the 'exit' call and
> > > thats why exit terminates but how this affect the shell to
> > > terminate, I mean it is child process who executed the 'exit' call
> > > so why then shell exits.
> >
> > There is no fork() call. exit is a shell builtin. Running it, causes
> > the shell to terminate.
> is exec also a shell built-in?
> >
> > --
> > Kernelnewbies: Help each other learn about the Linux kernel.
> > Archive: http://mail.nl.linux.org/kernelnewbies/
> > FAQ: http://kernelnewbies.org/faq/
> >
>
> --
> Kernelnewbies: Help each other learn about the Linux kernel.
> Archive: http://mail.nl.linux.org/kernelnewbies/
> FAQ: http://kernelnewbies.org/faq/
>
>
>
>
> Confidentiality Notice
>
> The information contained in this electronic message and any attachments to this message are intended
> for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
> you are not the intended recipient, please notify the sender at Wipro or Mailadmin@xxxxxxxxx immediately
> and destroy all copies of this message and any attachments.
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/