Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: how do i run a shell command without waiting for the output

by shmem (Chancellor)
on Apr 24, 2017 at 11:58 UTC ( #1188756=note: print w/replies, xml ) Need Help??

in reply to how do i run a shell command without waiting for the output

is this rigth ?

Yes - if, as your code shows, you are using exec. You can use system as well inside the forked process, which allows you to check the return code; you have to exit after that. But you can also do without the fork, since system does an implicit fork, and spawn the process via /bin/sh in the background:

system qq(curl -H "Content-Type: application/json" -X POST -d '$datacu +rl' &); # <--- not +ice the ampersand

This lets you check - again, via the return code, which should be 0 on success - whether the shell succeeded spawning curl. If so, the shell returns immediately, and the curl process runs in the background. Otherwise the shell exits with a non-zero value, which is returned by system.

perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'

Replies are listed 'Best First'.
Re^2: how do i run a shell command without waiting for the output
by afoken (Chancellor) on Apr 25, 2017 at 18:09 UTC

    Unfortunately, "the" shell is everything but a single, consistent definition. Perl invokes the default shell, which can and does vary wildly from platform to platform and from system version to system version.

    More details:

    Of course, simply appending a space and an ampersand to a shell command to make the shell start a "background" process is not portable. Even on shells that support backgrounding, it might not work due to pipes or the like used in the command.

    And finally, shelling out to start curl just wastes time and resources. Perl can do HTTP requests just fine thanks to LWP::UserAgent, Net::HTTP::Client, and various other modules. Plus, there are at least three modules that use libcurl as backend: Net::Curl, WWW::Curl, and LWP::Curl.


    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

      Thanks for your post which contains the missing bits for the OP to be fully answered. ++afoken

      perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'

Log In?

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2023-12-11 01:46 GMT
Find Nodes?
    Voting Booth?
    What's your preferred 'use VERSION' for new CPAN modules in 2023?

    Results (41 votes). Check out past polls.