in reply to Re: Running detached processes with Activeperl under IIS
in thread Running detached processes with Activeperl under IIS

Thanks for the pointers all.

I tried adding the /d to the system command, and taking the quotes off of DETACHED_PROCESS...but it still waits....

However, my exe is a console app...so maybe that's why. I didn't realize there was a difference in the way they are handled.

I'm going to go back and see if I can convert it to a Windows app and get it to run...maybe that will help.

  • Comment on Re^2: Running detached processes with Activeperl under IIS

Replies are listed 'Best First'.
Re^3: Running detached processes with Activeperl under IIS
by BrowserUk (Patriarch) on May 12, 2009 at 13:32 UTC

      Sorry...."but it still waits" was to mean, the parent cgi still waits for the console application to complete. No change from using CREATE_NEW_CONSOLE either.

      Why does Windows have to be such a pita?

        still waits for the console application t

        Well that's fishy. It can't be detached from and attached to the console at the same time.

        Why does Windows have to be such a pita?

        You have to close the handles and muck with process groups and signals in unix. No easier.

        There are valid complaints against Microsoft and Windows (parameter passing to processes, as a related example), but mind the baseless bashing. DETACHED_PROCESS works fine, and there's nothing complicated about it.

        # launcher.pl use strict; use warnings; use Win32; use Win32::Process; sub ErrorReport{ return Win32::FormatMessage( Win32::GetLastError() ); } my $detached = $ARGV[0]; unlink('foo'); Win32::Process::Create( my $ProcessObj, "c:\\progs\\perl5100\\bin\\perl.exe", q{perl.exe -le"sleep 5; open $fh, '>foo' or die $!; print 'done'"}, 0, NORMAL_PRIORITY_CLASS | ($detached ? DETACHED_PROCESS : 0), '.', ) or die ErrorReport();
        >perl -e"print `perl launcher.pl 0`" & dir /b foo [waits 5 seconds] done foo >perl -e"print `perl launcher.pl 1`" & dir /b foo [returns immediately] File Not Found >perl -e"sleep 5" & dir /b foo foo

        Are you using use strict;?