bug-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Gprolog 1.4 exec/5 does not work under cygwin


From: Daniel Diaz
Subject: Re: Gprolog 1.4 exec/5 does not work under cygwin
Date: Tue, 07 Feb 2012 12:13:37 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111229 Thunderbird/9.0

Hello Mark,

sorry I'm overheaded currently. Could tou however try the last version (in unstable):

http://gprolog.univ-paris1.fr/unstable/gprolog-20120131.tgz

I have fixed somethings about wait/2.

Please keep me informed.

Daniel

Le 06/02/2012 08:36, Mark Utting a écrit :

Daniel Diaz-3 wrote:
     A first remark without looking at details...

     The gprolog version you downloaded is a native Windows app. It does
     not know nothing about cygwin.
     In particular bash or /bin cannot be resolved.
     You can try passing 'c:/cygwin/bin/echo abc' to see if it is better.
     For instance try:

     exec('dir', I,O,E,P), repeat, get_char(O,T), write(T), T =
end_of_file, !, wait(P,S).

     What do you obtain ?


Interesting, I get this:


$ gprolog
GNU Prolog 1.4.0
By Daniel Diaz
Copyright (C) 1999-2011 Daniel Diaz
| ?- exec('dir', I,O,E,P), repeat, get_char(O,T), write(T),  T =
end_of_file, !, wait(P,S).
  Volume in drive C is OS
  Volume Serial Number is F44F-E564

  Directory of C:\marku\starlog\trunk

12/12/2011  12:31 PM<DIR>           .
12/12/2011  12:31 PM<DIR>           ..
13/12/2011  02:13 PM<DIR>           .svn
12/12/2011  12:30 PM<DIR>           art
12/12/2011  12:31 PM<DIR>           cuda
12/12/2011  12:31 PM<DIR>           doc
...
                0 File(s)              0 bytes
               31 Dir(s)  314,787,344,384 bytes free
end_of_file

uncaught exception: error(system_error('No child processes'),wait/2)
| ?-


which shows that the exec is working, but the wait is not (perhaps the child
process is not being kept around as a zombie until the wait?)


    or
    exec('c:/cygwin/bin/echo abc', I,O,E,P), repeat, get_char(O,T),
write(T),  T = end_of_file, !, wait(P,S).
    What do you obtain ?

Same result.
I did this twice - the first time with a non-existent executable and the
second time with the correct path to cygwin echo.


$ gprolog
GNU Prolog 1.4.0
By Daniel Diaz
Copyright (C) 1999-2011 Daniel Diaz
| ?- exec('c:/cygwin/bin/echo abc', I,O,E,P), repeat, get_char(O,T),
write(T),  T = end_of_file, !, wait(P,S).
end_of_file

uncaught exception: error(system_error('No child processes'),wait/2)
| ?- exec('c:/Apps/cygwin/bin/echo abc', I,O,E,P), repeat, get_char(O,T),
write(T),  T = end_of_file, !, wait(P,S).
abc
end_of_file

uncaught exception: error(system_error('No child processes'),wait/2)
| ?-




    If you want a pure cygwin app you should download a source .tar.gz
package and build it under cygwin.

Yes, I've tried that.  It builds and installs successfully, but I get the
same problem with wait/2:


address@hidden /cygdrive/c/Apps/gprolog-1.4.0/src
$ which gprolog
/usr/local/bin/gprolog


$ gprolog
GNU Prolog 1.4.0
By Daniel Diaz
Copyright (C) 1999-2011 Daniel Diaz
| ?- exec('dir', I,O,E,P), repeat, get_char(O,T), write(T),  T =
end_of_file, !, wait(P,S).
  Volume in drive C is OS
  Volume Serial Number is F44F-E564

  Directory of C:\Apps\gprolog-1.4.0\src

14/12/2011  06:01 AM<DIR>           .
14/12/2011  06:01 AM<DIR>           ..
17/12/2008  02:36 AM             4,131 .indent.pro
18/06/1999  05:53 PM             7,832 AUTOCONF-INFO
14/12/2011  06:00 AM<DIR>           BipsFD
14/12/2011  05:59 AM<DIR>           BipsPl
...
               22 File(s)        414,279 bytes
               16 Dir(s)  314,768,809,984 bytes free
end_of_file

uncaught exception: error(system_error('No child processes'),wait/2)
| ?-


Does the gprolog 1.4.0 wait/2 call work on your Windows machine?
Ordinary C programs that use exec and wait seem to work fine,
for example the fork-03.c program here:
http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/wait.html  seems to
produce the expected output.


Thanks
Mark





--
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]