On Fri, 20 Dec 2002, Aaron Burke wrote:

> > 3. Avoid using system() which I vaguely recall being described with a
> >    lot of bad words in various places and use fork(), exec(), _exit(),
> >    waitpid() and exit() instead.
>
> How would I do this with exec. According to the man page for exec
> I have only a few options.
>      int execl(const char *path, const char *arg, ...);
>      int execlp(const char *file, const char *arg, ...);
>      int execle(const char *path, const char *arg, ...);
>      int exect(const char *path, char *const argv[],
>                  char *const envp[]);
>      int execv(const char *path, char *const argv[]);
>      int execvp(const char *file, char *const argv[]);
>
> Can you point me to the right documentation to learn about
> the exec functions provided by <unistd.h>?
>
> Allthough I am not familiar with unistd.h at all, I did do
> a little bit of expermentation.
>
> Here is my new code:
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
>
> int main(int argc, char* pszArgs[])
> {
>         int result, result2;
>         result= execlp("/usr/bin/su", "ppp", "-m");
>         result2=execlp("/usr/local/bin/screen", "-x");
>         return result + result2;
> }
> bash-2.05$ g++ run-ppp.c
> bash-2.05$ ./a.out
> bash-2.05$
>
> I am a little supprised that nothing appeared to have happened.
> Perhaps I am running these improperly. Am I using the correct
> exec command? Can you demonstrate how this should work?
> What else could execlp(args) needs to say?
>
> >
> > - Giorgos
> >
>
> Thanks for your time.

I think execlp is writing over your current process. So first your
process is exchanged with ppp, then ppp is exchanged with screen. You
have to make a copy of your current process, a.out, by using fork, and
then exchange the process image in this copy using execlp.

I suggest you read more about those functions Giorgos mentioned: fork,
execlp, waitpid, and exit.

Best regards,
Paul


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-questions" in the body of the message

Reply via email to