Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^4: Fork and creating a thread exits the process

by fluks (Novice)
on Jul 31, 2020 at 13:11 UTC ( [id://11120133]=note: print w/replies, xml ) Need Help??


in reply to Re^3: Fork and creating a thread exits the process
in thread Fork and creating a thread exits the process

Yes, it didn't fork at all. I tried a test script and both, the fork and threads worked. In my program, it was the first fork that failed. I couldn't even print the return value and it doesn't print any error messages on exit.

I tested now with Strawberry 64bit and I wasn't able to get it work. But I tried again starting with a fresh 32bit version at that still does work.

Yes, I read about perlfork.

  • Comment on Re^4: Fork and creating a thread exits the process

Replies are listed 'Best First'.
Re^5: Fork and creating a thread exits the process
by pryrt (Abbot) on Jul 31, 2020 at 13:36 UTC
    fluks,

    I have 64-bit Strawberry 5.30, and it has no trouble correctly running fork:

    #!perl use strict; use warnings; use feature 'say'; use Config; BEGIN { $| = 1; # autoflush say "perl $^V, uname = ", $Config{myuname}; } END { say scalar localtime, "\tprocess $$ is exiting"; } my $pid = fork(); if($pid==0) { say scalar localtime, "\tI am the child $$"; exit; } say scalar localtime, "\tI am the parent $$"; __END__ perl v5.30.0, uname = Win32 strawberry-perl 5.30.0.1 #1 Thu May 23 12: +20:46 2019 x64 Fri Jul 31 06:32:31 2020 I am the parent 10128 Fri Jul 31 06:32:31 2020 process 10128 is exiting Fri Jul 31 06:32:31 2020 I am the child -5108 Fri Jul 31 06:32:31 2020 process -5108 is exiting

    What happens if you run the same code?

      This test works on 32bit Strawberry. And to be clear, my program works with that Perl version too, both with forking and threads, it seems to be the only Perl that it works on.

        This test works on 32bit Strawberry.

        But does it work for you on 64bit? I ask this because you said,

        tested now with Strawberry 64bit and I wasn't able to get it work. But I tried again starting with a fresh 32bit version at that still does work.

        With my code, I was showing a fork-based program that was known-working for me in 64bit, and wanted you to see whether or not my code worked on your 64bit Strawberry.

        32bit Strawberry ... seems to be the only Perl that it works on

        I do not see that limitation. The code I posted works for me on both 32bit and 64bit.

Re^5: Fork and creating a thread exits the process
by bliako (Monsignor) on Jul 31, 2020 at 13:29 UTC

    you are presumably running your actual program inside a web server? Perhaps that's the one blocking the forks? If your test script forks then web server configuration could be one of the problems. There are log files for both the server and windows

      No, it's a normal and simple command line program.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2024-04-25 15:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found