On Saturday 04 August 2007 15:13:34 RW wrote:
> On Sat, 4 Aug 2007 13:23:07 -0500
> Dan Nelson <[EMAIL PROTECTED]> wrote:
> > In the last episode (Aug 04), RW said:
> > > mailwrapper checks to see how it was invoked and then looks up the
> > > appropriate command in mailer.conf. All of the entries in
> > > mailer.conf point to /usr/libexec/sendmail/sendmail, so how does
> > > that binary know what it's supposed to do.
> > The kernel passes the executable name to the running process along
> > with the rest of the commandline arguments. If you run "ls -l /tmp",
> > for example, the ls binary gets "ls", "-l", and "/tmp" as its
> > arguments. See around line 360 of src/contrib/sendmail/src/main.c.
> Yes, I understand that. When you type mailq, mailwrapper's argv will
> contain "mailq". but then mailwrapper looks-up mailq in mailer.conf
> and runs /usr/libexec/sendmail/sendmail. So when sendmail checks it's
> argv I was assuming that it would see "sendmail".
> What I didn't get was that when a binary is executed from execve(), it's
> the parent program that sets the argv seen by the child, and not
> the kernel.
Sorry, I should have paid closer attention to your question and actually
looked at the code to see what they were doing in this specific case.
They original args, including argv, are passed as args parameter to execve.
So from the perspective of the called application, the original argv is
Take a look at how mailwrapper.c uses the arglist structure.
> firstname.lastname@example.org mailing list
> To unsubscribe, send any mail to
> "[EMAIL PROTECTED]"
Don Hinton <don.hinton at vanderbilt.edu> or <hintonda at gmail.com>
Institute for Software Integrated Systems (ISIS), Vanderbilt University
tel: 615.480.5667 or 615.870.9728
email@example.com mailing list
To unsubscribe, send any mail to "[EMAIL PROTECTED]"