bash 㧠Ctrl-C ãããã¯ããæ¹æ³ãã¤ã¾ãSIGINTãèªåã®ã·ã°ãã«ãã³ãã©ã§ææããæ¹æ³ã«ã¤ãã¦ã¡ã¢ã
æ¦è¦
ã·ã°ãã«ãã³ãã©ãè¨å®ããã«ã¯ãtrap ã¨ããbashã®ãã«ãã¤ã³ã»ã³ãã³ãã使ãã¾ã
#!/bin/bash hander() { echo "recv!!" } trap hander SIGINT while /bin/true; do : ; done
Ctrl-Cãæ¼ã㨠SIGINT ã¨ããååã®ã·ã°ãã«ãããã»ã¹ã«éç¥ãããã®ã§ãtrapã³ãã³ã㧠SIGINT ãåãåã£ãã hander ã¨ããé¢æ°ãå¼ã¶ããã«è¨å®ãã¦ãã¾ã
ãã®ã·ã§ã«ã¹ã¯ãªããã¯å®è¡ããã¨æ«å°¾ã§ç¡éã«ã¼ãã«ãªãã ãã§ãããã Ctrl-C ãæ¼ãã¦ããã·ã§ã«ã¹ã¯ãªããã¯çµäºããã代ããã« hander()é¢æ°ãå¼ã°ãã¦"recv!" ã¨ããæååãç»é¢ã«è¡¨ç¤ºããã¾ã
Ctrl-Cã§ã¯åæ¢ããªãã®ã§ãçµäºãããå ´å㯠Ctrl-Z ã§ä¸æããã¦
$ kill %1
ã¨ãã¾ã
å®å©ç¨ä¾
ã¹ã¯ãªããå ã§åããã°ã©ã (=åããã»ã¹)ãèµ·åãã¦ã Ctrl-C ãæ¼ãããããåããã°ã©ã ã ãkillããä¾
#!/bin/bash hander() { kill %1 } trap hander SIGINT ./childprogram & wait %1