<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## sigaction ## 查詢或設置信號處理方式 ### 相關函數 ### signal,sigprocmask,sigpending,sigsuspend ### 表頭文件 ### ``` #include<signal.h> ``` ### 定義函數 ### ``` int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); ``` ### 函數說明 ### sigaction()會依參數signum指定的信號編號來設置該信號的處理函數。參數signum可以指定SIGKILL和SIGSTOP以外的所有信號。 如參數結構sigaction定義如下 ``` struct sigaction { void (*sa_handler) (int); sigset_t sa_mask; int sa_flags; void (*sa_restorer) (void); } ``` sa_handler此參數和signal()的參數handler相同,代表新的信號處理函數,其他意義請參考signal()。 sa_mask 用來設置在處理該信號時暫時將sa_mask 指定的信號擱置。 sa_restorer 此參數沒有使用。 sa_flags 用來設置信號處理的其他相關操作,下列的數值可用。 OR 運算(|)組合 A_NOCLDSTOP : 如果參數signum為SIGCHLD,則當子進程暫停時并不會通知父進程 SA_ONESHOT/SA_RESETHAND:當調用新的信號處理函數前,將此信號處理方式改為系統預設的方式。 SA_RESTART:被信號中斷的系統調用會自行重啟 SA_NOMASK/SA_NODEFER:在處理此信號未結束前不理會此信號的再次到來。 如果參數oldact不是NULL指針,則原來的信號處理方式會由此結構sigaction 返回。 ### 返回值 ### 執行成功則返回0,如果有錯誤則返回-1。 ### 錯誤代碼 ### EINVAL 參數signum 不合法, 或是企圖攔截SIGKILL/SIGSTOPSIGKILL信號 EFAULT 參數act,oldact指針地址無法存取。 EINTR 此調用被中斷 ### 范例 ### ``` #include<unistd.h> #include<signal.h> void show_handler(struct sigaction * act) { switch (act->sa_flags) { case SIG_DFL:printf(“Default action\n”);break; case SIG_IGN:printf(“Ignore the signal\n”);break; default: printf(“0x%x\n”,act->sa_handler); } } main() { int i; struct sigaction act,oldact; act.sa_handler = show_handler; act.sa_flags = SA_ONESHOT|SA_NOMASK; sigaction(SIGUSR1,&act,&oldact); for(i=5;i<15;i++) { printf(“sa_handler of signal %2d =”.i); sigaction(i,NULL,&oldact); } } ``` ### 執行 ### ``` sa_handler of signal 5 = Default action sa_handler of signal 6= Default action sa_handler of signal 7 = Default action sa_handler of signal 8 = Default action sa_handler of signal 9 = Default action sa_handler of signal 10 = 0x8048400 sa_handler of signal 11 = Default action sa_handler of signal 12 = Default action sa_handler of signal 13 = Default action sa_handler of signal 14 = Default action ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看