• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            elva

            Linux Signals

            Signals

            Linux Signals are:

            Signal Name Number Description
            SIGHUP 1 Hangup (POSIX)
            SIGINT 2 Terminal interrupt (ANSI)
            SIGQUIT 3 Terminal quit (POSIX)
            SIGILL 4 Illegal instruction (ANSI)
            SIGTRAP 5 Trace trap (POSIX)
            SIGIOT 6 IOT Trap (4.2 BSD)
            SIGBUS 7 BUS error (4.2 BSD)
            SIGFPE 8 Floating point exception (ANSI)
            SIGKILL 9 Kill(can't be caught or ignored) (POSIX)
            SIGUSR1 10 User defined signal 1 (POSIX)
            SIGSEGV 11 Invalid memory segment access (ANSI)
            SIGUSR2 12 User defined signal 2 (POSIX)
            SIGPIPE 13 Write on a pipe with no reader, Broken pipe (POSIX)
            SIGALRM 14 Alarm clock (POSIX)
            SIGTERM 15 Termination (ANSI)
            SIGSTKFLT 16 Stack fault
            SIGCHLD 17 Child process has stopped or exited, changed (POSIX)
            SIGCONT 18 Continue executing, if stopped (POSIX)
            SIGSTOP 19 Stop executing(can't be caught or ignored) (POSIX)
            SIGTSTP 20 Terminal stop signal (POSIX)
            SIGTTIN 21 Background process trying to read, from TTY (POSIX)
            SIGTTOU 22 Background process trying to write, to TTY (POSIX)
            SIGURG 23 Urgent condition on socket (4.2 BSD)
            SIGXCPU 24 CPU limit exceeded (4.2 BSD)
            SIGXFSZ 25 File size limit exceeded (4.2 BSD)
            SIGVTALRM 26 Virtual alarm clock (4.2 BSD)
            SIGPROF 27 Profiling alarm clock (4.2 BSD)
            SIGWINCH 28 Window size change (4.3 BSD, Sun)
            SIGIO 29 I/O now possible (4.2 BSD)
            SIGPWR 30 Power failure restart (System V)

            As noted above, processes can ignore, block, or catch all signals except SIGSTOP and SIGKILL. If a process catches a signal, it means that it includes code that will take appropriate action when the signal is received. If the signal is not caught by the process, the kernel will take default action for the signal.

            FIFOs

            FIFOs are permanent objects and can be created using the mkfifo(1) or mknod(1) command. Inside the program, the FIFO can be created using the mknod command, then opened and read from or written to just like a normal file. The FIFO is normally in blocking mode when attempting to perform read operations.


            引用自:http://www.comptechdoc.org/os/linux/programming/linux_pgsignals.html



            在終端使用kill -l 命令可以顯示所有的信號。
            $kill -l
            1) SIGHUP
            2) SIGINT 3) SIGQUIT 4) SIGILL
            5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
            9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
            13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
            17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
            21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
            25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
            29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
            35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
            39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
            43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
            47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
            51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
            55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
            59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
            63) SIGRTMAX-1 64) SIGRTMAX

            其中前面31個信號為不可靠信號(非實時的,可能會出現信號的丟失),后面的信號為可靠信號(實時的real_time,對信號
            排隊,不會丟失)。

            1) SIGHUP (掛起) 當運行進程的用戶注銷時通知該進程,使進程終止

            2) SIGINT (中斷) 當用戶按下時,通知前臺進程組終止進程

            3) SIGQUIT (退出) 用戶按下或時通知進程,使進程終止

            4) SIGILL (非法指令) 執行了非法指令,如可執行文件本身出現錯誤、試圖執行數據段、堆棧溢出

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

            6) SIGABRT (異常中止) 調用abort函數生成的信號

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

            8) SIGFPE (算術異常) 發生致命算術運算錯誤,包括浮點運算錯誤、溢出及除數為0.

            9) SIGKILL (確認殺死) 當用戶通過kill -9命令向進程發送信號時,可靠的終止進程

            10) SIGUSR1 用戶使用

            11) SIGSEGV (段越界) 當進程嘗試訪問不屬于自己的內存空間導致內存錯誤時,終止進程

            12) SIGUSR2 用戶使用

            13) SIGPIPE 寫至無讀進程的管道, 或者Socket通信SOCT_STREAM的讀進程已經終止,而再寫入。

            14) SIGALRM (超時) alarm函數使用該信號,時鐘定時器超時響應

            15) SIGTERM (軟中斷) 使用不帶參數的kill命令時終止進程

            17) SIGCHLD (子進程結束) 當子進程終止時通知父進程

            18) SIGCONT (暫停進程繼續) 讓一個停止(stopped)的進程繼續執行. 本信號不能被阻塞.

            19) SIGSTOP (停止) 作業控制信號,暫停停止(stopped)進程的執行. 本信號不能被阻塞, 處理或忽略.

            20) SIGTSTP (暫停/停止) 交互式停止信號, Ctrl-Z 發出這個信號

            21) SIGTTIN 當后臺作業要從用戶終端讀數據時, 終端驅動程序產生SIGTTIN信號

            22) SIGTTOU 當后臺作業要往用戶終端寫數據時, 終端驅動程序產生SIGTTOU信號

            23) SIGURG 有"緊急"數據或網絡上帶外數據到達socket時產生.

            24) SIGXCPU 超過CPU時間資源限制. 這個限制可以由getrlimit/setrlimit來讀取/改變。

            25) SIGXFSZ 當進程企圖擴大文件以至于超過文件大小資源限制。

            26) SIGVTALRM 虛擬時鐘信號. 類似于SIGALRM, 但是計算的是該進程占用的CPU時間.

            27) SIGPROF (梗概時間超時) setitimer(2)函數設置的梗概統計間隔計時器(profiling interval timer)

            28) SIGWINCH 窗口大小改變時發出.

            29) SIGIO(異步I/O) 文件描述符準備就緒, 可以開始進行輸入/輸出操作.

            30) SIGPWR 電源失效/重啟動

            31) SIGSYS 非法的系統調用。

            在以上列出的信號中,
            程序不可捕獲、阻塞或忽略的信號有:SIGKILL,SIGSTOP
            不能恢復至默認動作的信號有:SIGILL,SIGTRAP
            默認會導致進程流產的信號有:SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ
            默認會導致進程退出的信號有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM
            默認會導致進程停止的信號有:SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU
            默認進程忽略的信號有:SIGCHLD,SIGPWR,SIGURG,SIGWINCH

            此外,SIGIO在SVR4是退出,在4.3BSD中是忽略;SIGCONT在進程掛起時是繼續,否則是忽略,不能被阻塞。

            在Unix/Linux中signal函數是比較復雜的一個,其定義原型如下:
            void (*signal(int signo,void (*func)(int))) (int)
            這個函數中,最外層的函數體
            void (* XXX )(int)表明是一個指針,指向一個函數XXX的指針,XXX所代表的函數需要一個int型的參數,返回void
            signal(int signo, void(*func)(int))是signal函數的主體.
            需要兩個參數int型的signo以及一個指向函數的函數.
            void (*func)(int).
            正是由于其復雜性,在[Plauger 1992]用typedef來對其進行簡化
            typedef void Sigfuc(int);//這里可以看成一個返回值 .
            再對signal函數進行簡化就是這樣的了
            Sigfunc *signal(int,Sigfuc *);


            在signal.h頭文件中還有以下幾個定義
            #define SIG_ERR (void (*)())-1
            #define SIG_DFL (void (*)())0
            #define SIG_IGN (void (*)())1


            本文來自CSDN博客,轉載請標明出處: http://blog.csdn.net/nevercgoodbye/archive/2008/11/25/3367853.aspx



            posted on 2010-08-11 12:12 葉子 閱讀(1183) 評論(0)  編輯 收藏 引用 所屬分類: Unix

            欧美亚洲国产精品久久| 国产精品美女久久久m| 日本精品一区二区久久久| 久久精品无码av| 久久精品国产亚洲av麻豆小说| 日韩人妻无码精品久久久不卡| 亚洲AV无码一区东京热久久| 久久精品国产亚洲AV忘忧草18| 韩国免费A级毛片久久| 国产精品一区二区久久精品涩爱 | 人妻精品久久久久中文字幕69| 久久久久人妻一区精品色| 无码国内精品久久综合88| 国产AV影片久久久久久| 亚洲一区中文字幕久久| 成人免费网站久久久| 久久国产热这里只有精品| 国产精品VIDEOSSEX久久发布| 久久久精品一区二区三区| 久久久久亚洲AV成人网| 欧美精品久久久久久久自慰| 久久久久人妻一区二区三区 | 久久免费国产精品一区二区| 精品国产福利久久久| 99久久亚洲综合精品成人| 久久久精品午夜免费不卡| 亚洲国产成人乱码精品女人久久久不卡 | 91视频国产91久久久| 国产成人久久精品麻豆一区 | 久久精品国产99久久久古代| 久久久一本精品99久久精品88| 国产精品热久久无码av| 狠狠综合久久综合88亚洲| 国产一区二区三精品久久久无广告| 国产精品久久久久久久午夜片| 国产亚洲精品久久久久秋霞| 91精品国产91久久久久久蜜臀 | 久久夜色撩人精品国产| 韩国无遮挡三级久久| 97精品国产91久久久久久| 精品多毛少妇人妻AV免费久久 |