This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 (0x61000000)
        cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6d5d0000)
  $ ldd /bin/ls | grep -i cyg
        cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
        cygintl-8.dll => /usr/bin/cygintl-8.dll (0x6a990000)
        cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0x6b770000)
        cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6d5d0000)
  $ ldd /bin/sh | grep -i cyg
        cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
        cygintl-8.dll => /usr/bin/cygintl-8.dll (0x6a990000)
        cygiconv-2.dll => /usr/bin/cygiconv-2.dll (0x6b770000)
        cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x6d5d0000)
        cygreadline7.dll => /usr/bin/cygreadline7.dll (0x725a0000)
        cygncursesw-10.dll => /usr/bin/cygncursesw-10.dll (0x6a2e0000)

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]