Free Downloads, Community Forum,
FAQs and Developer Resources


Make /Tools Your Home | Link to us

Today's posts | Posts since last visit | Most Active Topics

All Forums Register Login Search Subscriptions My Profile Inbox
Tool Warehouse FAQs Resources Help Member List Address Book Logout

background processes launched by perl "system" command behave strangely in ksh -l or ksh -lc

 
Logged in as: Guest
Users viewing this topic: none
  Printable Version
All Forums >> [SFU / Interix / SUA Technology] >> Interix Advanced Forum >> background processes launched by perl "system" command behave strangely in ksh -l or ksh -lc Page: [1]
Login
Message << Older Topic   Newer Topic >>
background processes launched by perl "system"... - Feb. 7, '06, 6:03:55 AM   
gutnor

 

Posts: 2
Joined: Dec. 25, '05,
Status: offline
For an application we are currently porting we ran into a case where a perl script launched from Windows needs to create a background process that outputs logging in a file.
If launched from within an Interix interactive terminal, everything runs ok, but using posix.exe on command line it is not.

Here is a little test scenario:

I create 2 scripts (I used /tmp folder here but I had the same problem in other folder) :
cat > /tmp/test.pl <<!
#! /usr/local/bin/perl
use Socket;
use POSIX;
system("/tmp/test.sh &");
!
cat > /tmp/test.sh <<!
#! /bin/sh
/bin/echo Hello1 > /tmp/hello1.txt
/bin/echo Hello2 > /tmp/hello2.txt
!

TEST1:

From Windows command prompt launch ksh:
> posix.exe /u /c ksh -l
and from ksh launch test.pl:
% /tmp/test.pl

/tmp/hello1.txt is created and contains "Hello1" as expected.
/tmp/hello2.txt is also created and contains "Hello2" as expected.

TEST2:

From Windows command prompt launch the script (NB: same as using ksh.bat provided with Interix):
> posix.exe /u /c ksh -lc /tmp/test.pl

/tmp/hello1.txt is created but contains nothing !
/tmp/hello2.txt is NOT created.

( NB: Same problem when using
posix.exe /u /c ksh -c /tmp/test.pl
posix.exe /u /c /usr/local/bin/perl /tmp/test.pl
posix.exe /u /c /tmp/test.pl
replacing system("/tmp/test.sh &"); by system("/bin/ksh -lc /tmp/test.sh &");
)

Fixing the test scenario is easy, we already found several workarounds,
like
a. Not calling the task in background from perl - system("/tmp/test.sh &");
b. Using `/tmp/test.sh &` instead of system("/tmp/test.sh &")

but I may not be possible to fix everything as easily in the real scripts and could require significant testing on other Unix platform ...
Worse, we do not understand what's happening and therefore we think we may have only hit the tip of the iceberg ...

Does somebody understand the problem here ? Is there a problem with perl forking or are we hitting a hidden limit somewhere ?

Thanks,

Vincent

PS:
Our 2 test systems are
Win2000 Professional SP4
SFU 3.5
P4 1.8 GHz with 1GB memory
P4 2.4 GHz with 2GB memory
Post #: 1
RE: background processes launched by perl "system&... - Feb. 10, '06, 12:30:44 AM   
markfunk

 

Posts: 670
Joined: Mar. 31, '03,
Status: offline
Try setting stdout and stderr to valid Interix file descriptors
rather than relying on the Windows ones.
So, use :

posix.exe -u -c /bin/ksh -l -c "/tmp/test10.pl > /dev/null 2>&1"

(in reply to gutnor)
Post #: 2
RE: background processes launched by perl "system&... - Feb. 10, '06, 7:39:51 PM   
gutnor

 

Posts: 2
Joined: Dec. 25, '05,
Status: offline
Thanks a lot ! That fixed our problem.

BTW, during our testing we noticed this strange behavior only with Win2K family.

Thanks,

Vincent

(in reply to markfunk)
Post #: 3
Page:   [1]
All Forums >> [SFU / Interix / SUA Technology] >> Interix Advanced Forum >> background processes launched by perl "system" command behave strangely in ksh -l or ksh -lc Page: [1]
Jump to:





New Messages No New Messages
Hot Topic w/ New Messages Hot Topic w/o New Messages
Locked w/ New Messages Locked w/o New Messages
 Post New Thread
 Reply to Message
 Post New Poll
 Submit Vote
 Delete My Own Post
 Delete My Own Thread
 Rate Posts


Search All Forums -

Advanced search


SPONSORS



Forum Software © ASPPlayground.NET Advanced Edition 2.5 ANSI

0.141