in reply to Get the current function used to handle control+z

The key press Control-z is typically mapped by your termcap or terminfo database to the capability susp. Your terminal interprets that and sends a SIGSTOP signal to your foreground process. SIGSTOP is 19 on the CentOS box I looked at and 17 on the Mac OS X machine I also looked at. The kill program on your *NIX takes a signal name. kill() in Perl doesn't though the Config module stores your local system's mapping as well.

system "kill -STOP $$"; # stop self

⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊

Replies are listed 'Best First'.
Re^2: Get the current function used to handle control+z
by friedo (Prior) on Dec 14, 2008 at 07:46 UTC

    It's a little clunky, but you can do the kill from within perl by counting SIGSTOP's position in $Config{sig_name} (which, unfortunately, is a space-separated list rather than an array.)

    perl -MConfig -le 'for( split /\s/, $Config{sig_name} ) { last if /^STOP$/; $n++ } kill $n, $$'
    This just counts signal names until it gets to STOP, and $n will contain the right number.

      There's no need to search signal number in $Config
      kill STOP => $$;
      will work just fine.