Date: Tue, 4 Apr 2006 23:30:49 +0200 From: usleepless@gmail.com To: "Jonathan Herriott" <herriojr@gmail.com> Cc: cpghost <cpghost@cordula.ws>, freebsd-questions@freebsd.org, Bill Moran <wmoran@collaborativefusion.com> Subject: Re: C Program to execute programs in same console Message-ID: <c39ec84c0604041430m75e7f510h49f9cbecca89a35b@mail.gmail.com> In-Reply-To: <6a56d69c0604041402i456d33cfm2c6f571e5c558e@mail.gmail.com> References: <6a56d69c0604031439o7c2eed8an5710dad733a0e97@mail.gmail.com> <20060403174519.4d478a95.wmoran@collaborativefusion.com> <20060403220419.GA5042@epia2.farid-hajji.net> <6a56d69c0604041402i456d33cfm2c6f571e5c558e@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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@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@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 kn= ows > > > > 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@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.o= rg" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c39ec84c0604041430m75e7f510h49f9cbecca89a35b>