Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^10: Win32: Setting a layer with binmode causes problem with close() on Windows (PerlIO silently fails to close the file)

by BrowserUk (Patriarch)
on Jun 17, 2013 at 14:45 UTC ( [id://1039384]=note: print w/replies, xml ) Need Help??


in reply to Re^9: Win32: Setting a layer with binmode causes problem with close() on Windows (PerlIO silently fails to close the file)
in thread Win32: Setting a layer with binmode causes problem with close() on Windows

This scenario can work from (cmd.exe) console (no blocking), but not under whatever environment apache sets up (something like without console )

The problem is apache -- actually most webservers -- in that they do not forward the output from CGI processes until (all copies of) both STDOUT and STDERR handles have been closed. If you close those before launching your async process via system 1, ..., then it will not cause the server to block. You can also close them (immediately) within the async script or process.

With respect to Win32::Process, if you set the iflag parameter to false:

Win32::Process::Create($obj,$appname,$cmdline,$iflags,$cflags,$curdir) Creates a new process. Args: $obj container for process object $appname full path name of executable module $cmdline command line args $iflags flag: inherit calling processes handles or not $cflags flags for creation (see exported vars below) $curdir working dir of new process

That will also prevent the problem.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
  • Comment on Re^10: Win32: Setting a layer with binmode causes problem with close() on Windows (PerlIO silently fails to close the file)
  • Select or Download Code

Replies are listed 'Best First'.
Re^11: Win32: Setting a layer with binmode causes problem with close() on Windows (PerlIO silently fails to close the file)
by Anonymous Monk on Jun 17, 2013 at 14:51 UTC

    If you close those before launching your async process via system 1, ..., then it will not cause the server to block.

    :) yes, I'm aware that is common, and I had close ... and it didn't work

      I had close ... and it didn't work

      Hm. Try:

      use POSIX qw[ close ]; ... POSIX::close( $_ ) for 0 .. 255;

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
      font size=1

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1039384]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (3)
As of 2024-04-19 22:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found