歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

linux下的trap命令和SIGHUP信號量詳解(2)

 三、附錄

  1、中斷按鍵

  不同的終端類型、Shell版本其中斷的按鍵是不同的,甚至還可以自定義,這可通過stty命令查詢:

  引用

  # stty -a

  speed 38400 baud; rows 30; columns 111; line = 0;

  intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S;

  susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;

  -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts

  -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel

  opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0

  isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

  ^就是Ctrl的縮寫。

  2、信號詳情

  引用

  名稱      默認動作            說明

  SIGHUP      終止進程      終端線路掛斷

  SIGINT    終止進程      中斷進程

  SIGQUIT   建立CORE文件  終止進程,並且生成core文件

  SIGILL    建立CORE文件        非法指令

  SIGTRAP   建立CORE文件        跟蹤自陷

  SIGBUS    建立CORE文件        總線錯誤

  SIGSEGV   建立CORE文件        段非法錯誤

  SIGFPE    建立CORE文件        浮點異常

  SIGIOT    建立CORE文件        執行I/O自陷

  SIGKILL   終止進程      殺死進程

  SIGPIPE   終止進程      向一個沒有讀進程的管道寫數據

  SIGALarm  終止進程      計時器到時

  SIGTERM   終止進程      軟件終止信號

  SIGSTOP   停止進程      非終端來的停止信號

  SIGTSTP   停止進程      終端來的停止信號

  SIGCONT   忽略信號      繼續執行一個停止的進程

  SIGURG    忽略信號      I/O緊急信號

  SIGIO     忽略信號      描述符上可以進行I/O

  SIGCHLD   忽略信號      當子進程停止或退出時通知父進程

  SIGTTOU   停止進程      後台進程寫終端

  SIGTTIN   停止進程      後台進程讀終端

  SIGXGPU   終止進程      CPU時限超時

  SIGXFSZ   終止進程      文件長度過長

  SIGWINCH  忽略信號      窗口大小發生變化

  SIGPROF   終止進程      統計分布圖用計時器到時

  SIGUSR1   終止進程      用戶定義信號1

  SIGUSR2   終止進程      用戶定義信號2

  SIGVTALRM 終止進程      虛擬計時器到時

  1) SIGHUP 本信號在用戶終端連接(正常或非正常)結束時發出, 通常是在終端的控制進程結束時, 通知同一session內的各個作業, 這時它們與控制終端不再關聯.

  2) SIGINT 程序終止(interrupt)信號, 在用戶鍵入INTR字符(通常是Ctrl-C)時發出

  3) SIGQUIT 和SIGINT類似, 但由QUIT字符(通常是Ctrl-\)來控制. 進程在因收到SIGQUIT退出時會產生core文件, 在這個意義上類似於一個程序錯誤信號.

  4) SIGILL 執行了非法指令. 通常是因為可執行文件本身出現錯誤, 或者試圖執行數據段. 堆棧溢出時也有可能產生這個信號.

  5) SIGTRAP 由斷點指令或其它trap指令產生. 由debugger使用.

  6) SIGABRT 程序自己發現錯誤並調用abort時產生.

  7) SIGIOT 在PDP-11上由iot指令產生, 在其它機器上和SIGABRT一樣.

  8) SIGBUS 非法地址, 包括內存地址對齊(alignment)出錯. eg: 訪問一個四個字長的整數, 但其地址不是4的倍數.

  9) SIGFPE 在發生致命的算術運算錯誤時發出. 不僅包括浮點運算錯誤, 還包括溢出及除數為0等其它所有的算術的錯誤.

  10) SIGKILL 用來立即結束程序的運行. 本信號不能被阻塞, 處理和忽略.

  11) SIGUSR1 留給用戶使用

  12) SIGSEGV 試圖訪問未分配給自己的內存, 或試圖往沒有寫權限的內存地址寫數據.

  13) SIGUSR2 留給用戶使用

  14) SIGPIPE Broken pipe

  15) SIGALRM 時鐘定時信號, 計算的是實際的時間或時鐘時間. alarm函數使用該信號.

  16) SIGTERM 程序結束(terminate)信號, 與SIGKILL不同的是該信號可以被阻塞和處理. 通常用來要求程序自己正常退出. shell命令kill缺省產生這個信號.

  17) SIGCHLD 子進程結束時, 父進程會收到這個信號.

  18) SIGCONT 讓一個停止(stopped)的進程繼續執行. 本信號不能被阻塞. 可以用一個handler來讓程序在由stopped狀態變為繼續執行時完成特定的工作. 例如, 重新顯示提示符

Copyright © Linux教程網 All Rights Reserved