in reply to Re: How Was My Script Run?
in thread How Was My Script Run?

You can always do like
$ENV{I_AM_THE_PARENT_PROCESS_ALL_MY_KIDS} = "LOVE ME"; fork ...
Even cpan/cpanplus does this

Replies are listed 'Best First'.
Re^3: How Was My Script Run?
by HalNineThousand (Beadle) on Mar 15, 2011 at 16:11 UTC

    When I try using:

    if (-t STDIN) { $stdflag = 1; }
    I get the same result, whether I run my program from bash or if it's a spinoff from my Perl program, launched by system() or within backticks. I have no idea why, but that simply is not working on my system.

    When I use getppid() and get the command line from the /proc file system it works every time.

    What's important to me is that I have something that works so I don't have to set flags or be sure a parameter is passed on the command line. I can't use fork() to start the new process unless I make some significant changes in combining modules or USEing mods I don't want to on small daemon programs.

    But, as a point of interest, does anyone know why "-t STDIN" would still return a true when run from system() or with backticks?

    Thank you, everyone, for all the help!

      Unless you do  < NUL or some such, children might also get STDIN as tty -- i've seen it happen on win32, don't really know why, don't really care since I always rely on switches or commandline arguments, easier to debug, easier to implement, easily cross platform