popen () fails when running from the windows prompt

2011-07-15 Thread Luiz Claudio Valdetaro

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

2011-07-15 Thread 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.

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

2011-07-15 Thread Thomas Wolff

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

2011-07-16 Thread Corinna Vinschen
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