File: D1862.INT-in-subshell.sh

package info (click to toggle)
ble.sh 0.4.0~git20250321.d4c812b-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,516 kB
  • sloc: sh: 71,367; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (28 lines) | stat: -rw-r--r-- 760 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env bash

# function set_trap { for sig in INT QUIT; do trap "echo $sig >/dev/tty; trap - $sig; kill -$sig $BASHPID" "$sig"; done; }
# function process_something { echo do >/dev/tty; for ((i=0;i<1000000;i++)); do :; done; echo done >/dev/tty; }

function set_trap {
  trap 'echo INT >/dev/tty;trap - INT;kill -INT $BASHPID' INT
}
function process_something {
  echo start >/dev/tty
  for ((i=0;i<1000000;i++)); do :; done
  echo end >/dev/tty
}

case $1 in
(direct)
  set_trap; process_something ;;
(subshell)
  (set_trap; process_something) ;;
(comsub)
  : $(set_trap; process_something) ;;
(subshell-inherit)
  set_trap; (process_something) ;;
(comsub-inherit)
  set_trap; : $(process_something) ;;
(comsub-plain)
  : $(process_something) ;;
esac