C Program to execute programs in same console

Jonathan Herriott herriojr at gmail.com
Wed Apr 5 13:56:12 UTC 2006


usleep,

What I am trying to do is execute the command in the calling shell. 
So, if I were to execute my program, which changes the directory, it
would do the following:

> pwd
/usr/home/username/
> ./myprog ..
> pwd
/usr/home/

That's basically what I'm looking for.  Being able to modify the
calling shell with a program.

Thanks,
Jon

On 4/4/06, usleepless at gmail.com <usleepless at gmail.com> wrote:
> Jon,
>
> i believe you are mixing up some concepts.
>
> 1. if i read your title "C Program to execute programs in same
> console". i think this is easy, just use system("ls *.txt") and you
> are done. i believe you can choose wat to do with the output, i am not
> sure.
>
> 2. but you come up with the cd-command, which you want to change the
> context of your parent shell.  changing the home-dir of the current
> process ( your program ) can be done with chdir. altering the context
> of your parent-shell-process can not be done, except for setting
> environment variables ( through the proper C calls )
>
> but if you are running your program, your "shell" (interpreter) is
> temporarily not there:  your program is running the show. every
> system,execvp or whatever call will give you a child-process with a
> new shell, not the parent-shell-process. i believe you may set
> environment variables in your parent shell with the appropiate library
> calls, but not through a system/execvp call.
>
> so, maybe you should define what you really want to achieve. for
> example, qdvd-author runs alls kinds of external programs to generate
> thumbnails and slideshows for example.
>
> anybody please correct me if i am wrong.
>
> regards,
>
> usleep
>
>
> On 4/4/06, Jonathan Herriott <herriojr at gmail.com> wrote:
> > Thanks for the suggestion.  I haven't tried it yet, but I'll post if I
> > get it working.
> >
> > Thanks,
> > Jon
> >
> > On 4/3/06, cpghost <cpghost at cordula.ws> wrote:
> > > On Mon, Apr 03, 2006 at 05:45:19PM -0400, Bill Moran wrote:
> > > > On Mon, 3 Apr 2006 21:39:11 +0000
> > > > "Jonathan Herriott" <herriojr at gmail.com> wrote:
> > > > > So, my question is how can I get it to execute a cd in the current
> > > > > shell using c code.  You don't have to give me the code, just give me
> > > > > a term to search for or a function to look up.  I'm sure someone knows
> > > > > how to do it here!
> > > >
> > > > Unless I'm misunderstanding your question, "man 2 chdir" should help
> > out.
> > >
> > > Hmmm... chdir(2) would not change the parent process' (the shell's
> > > process) current working directory, only the current working directory
> > > of the process running the C program.
> > >
> > > Perhaps connecting to the shell via a pty, and then sending it a 'cd'
> > > command could work? Of look at how expect(1) (/usr/ports/lang/expect)
> > > implements this kind of stuff...
> > >
> > > Regards,
> > > -cpghost.
> > >
> > > --
> > > Cordula's Web. http://www.cordula.ws/
> > >
> > _______________________________________________
> > freebsd-questions at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> > To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
> >
>


More information about the freebsd-questions mailing list