in reply to Determine running process

You can use this below code

use strict; use warnings; use POSIX qw/getpgrp tcgetpgrp/; if (!open(TTY, "/dev/tty")) { print "no tty\n"; } else { my $tpgrp = tcgetpgrp(fileno(*TTY)); my $pgrp = getpgrp(); if ($tpgrp == $pgrp) { print "foreground\n"; } else { print "background\n"; } }

tcgetpgrp:

The tcgetpgrp() function will return the value of the pro- cess group ID of the foreground process group associated with the terminal. If there is no foreground process group, tcgetpgrp() returns a value greater than 1 that does not match the process group ID of any existing process group. The tcgetpgrp() function is allowed from a process that is a member of a background process group; however, the informa- tion may be subsequently changed by a process that is a member of a foreground process group.

getpgrp():

The getpgrp() function returns the process group ID of the calling process. Upon successful completion, these functions return the pro- cess group ID. Otherwise, getpgid() returns (pid_t)-1 and sets errno to indicate the error.