popen () fails when running from the windows prompt
i, I am planning a minimalistic installation of my application using cygwin. Everything works fine, except that popen() fails when running from the windows prompt. If I ran from the bash shell prompt of cygwin , it works fine. It is the only api I use that is failing. I created a simple, test program to narrow the issue, and it also fails. my intention is an installation with just my app, plus the cygwin.dll, as little files as possible. This is my test program: main (argc,argv) int argc; unsigned char *argv[]; { FILE *f; char command[80]="ls -l CGI-BIN"; char response[200]; f = popen (command,"r"); if (f == NULL) { puts ("stream error"); exit (0); } while (fgets(response,199,f) != NULL) { puts (response); } fclose (f); } The program allays fails printing "stream error" I guess that might be some additional setup I'm missing, such as environment variables? I apreciate any help you guys can give. Thanks, Luiz -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: popen () fails when running from the windows prompt
On 15 July 2011 19:41, Luiz Claudio Valdetaro wrote: > i, > > I am planning a minimalistic installation of my application using cygwin. > Everything works fine, except that popen() fails when running from the > windows prompt. > > If I ran from the bash shell prompt of cygwin , it works fine. It is the > only api I use that is failing. I created a simple, test program to narrow > the issue, and it also fails. > > my intention is an installation with just my app, plus the cygwin.dll, as > little files as possible. > > This is my test program: > > main (argc,argv) > int argc; > unsigned char *argv[]; > { > FILE *f; > char command[80]="ls -l CGI-BIN"; > char response[200]; > f = popen (command,"r"); > if (f == NULL) { > puts ("stream error"); > exit (0); > } > while (fgets(response,199,f) != NULL) { > puts (response); > } > fclose (f); > } > > The program allays fails printing "stream error" It's because popen() requires /bin/sh. Andy -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: popen () fails when running from the windows prompt
Am 15.07.2011 21:22, schrieb Andy Koppe: On 15 July 2011 19:41, Luiz Claudio Valdetaro wrote: i, I am planning a minimalistic installation of my application using cygwin. Everything works fine, except that popen() fails when running from the windows prompt. If I ran from the bash shell prompt of cygwin , it works fine. It is the only api I use that is failing. I created a simple, test program to narrow the issue, and it also fails. my intention is an installation with just my app, plus the cygwin.dll, as little files as possible. This is my test program: main (argc,argv) int argc; unsigned char *argv[]; { FILE *f; char command[80]="ls -l CGI-BIN"; char response[200]; f = popen (command,"r"); if (f == NULL) { puts ("stream error"); exit (0); } while (fgets(response,199,f) != NULL) { puts (response); } fclose (f); } The program allays fails printing "stream error" It's because popen() requires /bin/sh. It works if you copy the following files plus popen itself into a subdirectory "bin" and include that into your PATH: cyggcc_s-1.dll cygiconv-2.dll cygintl-8.dll cygncursesw-10.dll cygreadline7.dll cygwin1.dll ls.exe sh.exe I wonder though why all these libraries are dependencies; the program doesn't use curses, nor intl or iconv, and I linked it with -static-libgcc. Still miraculous. -- Thomas -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Re: popen () fails when running from the windows prompt
On Jul 16 00:31, Thomas Wolff wrote: > Am 15.07.2011 21:22, schrieb Andy Koppe: > >On 15 July 2011 19:41, Luiz Claudio Valdetaro wrote: > >>i, > >> > >>I am planning a minimalistic installation of my application using cygwin. > >>Everything works fine, except that popen() fails when running from the > >>windows prompt. > >> > >>If I ran from the bash shell prompt of cygwin , it works fine. It is the > >>only api I use that is failing. I created a simple, test program to narrow > >>the issue, and it also fails. > >> > >>my intention is an installation with just my app, plus the cygwin.dll, as > >>little files as possible. > >> > >>This is my test program: > >> > >>main (argc,argv) > >>int argc; > >>unsigned char *argv[]; > >>{ > >>FILE *f; > >>char command[80]="ls -l CGI-BIN"; > >>char response[200]; > >>f = popen (command,"r"); > >>if (f == NULL) { > >> puts ("stream error"); > >> exit (0); > >>} > >> while (fgets(response,199,f) != NULL) { > >>puts (response); > >> } > >> fclose (f); > >>} > >> > >>The program allays fails printing "stream error" > >It's because popen() requires /bin/sh. > It works if you copy the following files plus popen itself into a > subdirectory "bin" and include that into your PATH: > cyggcc_s-1.dll > cygiconv-2.dll > cygintl-8.dll > cygncursesw-10.dll > cygreadline7.dll > cygwin1.dll > ls.exe > sh.exe > > I wonder though why all these libraries are dependencies; the > program doesn't use curses, nor intl or iconv, and I linked it with > -static-libgcc. Still miraculous. Not really. These are dependencies of sh.exe, which is bash by default. $ ldd popen | grep -i cyg cygwin1.dll => /usr/bin/cygwin1.dll (0x6100) cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6d5d) $ ldd /bin/ls | grep -i cyg cygwin1.dll => /usr/bin/cygwin1.dll (0x6100) cygintl-8.dll => /usr/bin/cygintl-8.dll (0x6a99) cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0x6b77) cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6d5d) $ ldd /bin/sh | grep -i cyg cygwin1.dll => /usr/bin/cygwin1.dll (0x6100) cygintl-8.dll => /usr/bin/cygintl-8.dll (0x6a99) cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0x6b77) cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6d5d) cygreadline7.dll => /usr/bin/cygreadline7.dll (0x725a) cygncursesw-10.dll => /usr/bin/cygncursesw-10.dll (0x6a2e) Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple