Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re^2: Detecting forground and background process

by astroboy (Chaplain)
on Jul 20, 2010 at 04:39 UTC ( #850349=note: print w/replies, xml ) Need Help??

in reply to Re: Detecting forground and background process
in thread Detecting forground and background process

Ok - well for my purposes, let's say we're not running in a console. We could be called from a Win32::Daemon service. So I'm trying to determine whether I'm running in a console (or terminal session) or not. So let me rephrase, The solution doesn't need to be generic. I can just have a condition to see if I'm running on Windows or *nix, and then do the appropriate check ... but I still need to know what the check would be

  • Comment on Re^2: Detecting forground and background process

Replies are listed 'Best First'.
Re^3: Detecting forground and background process
by almut (Canon) on Jul 20, 2010 at 04:49 UTC

    Maybe you could check if STDIN is opened to a terminal/console:

    if (-t STDIN) { ...

      Good, but not sufficient. Input may come from a pipe or a file, so you also should check STDOUT. But even that is not sufficient, because STDOUT could be redirected or piped, too, so you may also want to check STDERR. And, you may already have guessed that, even that is not sufficient, as also STDERR can be piped or redirected.

      If you have a dual-mode script that can work both as a daemon ("background process") and as an interactive command, use a command line switch for the daemon mode. Make the daemon starter (daemontools, init, srvany.exe) pass that switch to your command. Alternatively, use a symbolic link and decide based on $0, or use two scripts that have their shared code in one or more modules.


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

        It was my impression that with "in the foreground" the OP actually meant "interactively".  And it's a matter of definition whether a process with stdin redirected (or std* for that matter) is still considered interactive.

        Maybe the OP himself should clarify...

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://850349]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2018-03-21 13:18 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (267 votes). Check out past polls.