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.
|
---|