<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之旅 廣告
                [TOC] # 信號產生函數 ## kill函數 ~~~ #include <sys/types.h> #include <signal.h> ? int kill(pid_t pid, int sig); 功能:給指定進程發送指定信號(不一定殺死) ? 參數: pid : 取值有 4 種情況 : pid > 0: 將信號傳送給進程 ID 為pid的進程。 pid = 0 : 將信號傳送給當前進程所在進程組中的所有進程。 pid = -1 : 將信號傳送給系統內所有的進程。 pid < -1 : 將信號傳給指定進程組的所有進程。這個進程組號等于 pid 的絕對值。 sig : 信號的編號,這里可以填數字編號,也可以填信號的宏定義,可以通過命令 kill - l("l" 為字母)進行相應查看。不推薦直接使用數字,應使用宏名,因為不同操作系統信號編號可能不同,但名稱一致。 ? 返回值: 成功:0 失敗:-1 ~~~ super用戶(root)可以發送信號給任意用戶,普通用戶是不能向系統用戶發送信號的。 kill -9 (root用戶的pid) 是不可以的。同樣,普通用戶也不能向其他普通用戶發送信號,終止其進程。 只能向自己創建的進程發送信號。 普通用戶基本規則是:發送者實際或有效用戶ID == 接收者實際或有效用戶ID ~~~ int main() { pid_t pid = fork(); if (pid == 0) {//子進程 int i = 0; for (i = 0; i<5; i++) { printf("in son process\n"); sleep(1); } } else {//父進程 printf("in father process\n"); sleep(2); printf("kill sub process now \n"); kill(pid, SIGINT); } ? return 0; } ~~~ ## raise函數 ~~~ #include <signal.h> ? int raise(int sig); 功能:給當前進程發送指定信號(自己給自己發),等價于 kill(getpid(), sig) 參數: sig:信號編號 返回值: 成功:0 失敗:非0值 ~~~ ## abort函數 ~~~ #include <stdlib.h> ? void abort(void); 功能:給自己發送異常終止信號 6) SIGABRT,并產生core文件,等價于kill(getpid(), SIGABRT); ? 參數:無 返回值:無 ~~~ ## alarm函數(鬧鐘) ~~~ ?#include <unistd.h> ? unsigned int alarm(unsigned int seconds); 功能: 設置定時器(鬧鐘)。在指定seconds后,內核會給當前進程發送14)SIGALRM信號。進程收到該信號,默認動作終止。每個進程都有且只有唯一的一個定時器。 取消定時器alarm(0),返回舊鬧鐘余下秒數。 參數: seconds:指定的時間,以秒為單位 返回值: 返回0或剩余的秒數 ~~~ 定時,與進程狀態無關(自然定時法)!就緒、運行、掛起(阻塞、暫停)、終止、僵尸……無論進程處于何種狀態,alarm都計時。 ~~~ int main() { int seconds = 0; ? seconds = alarm(5); printf("seconds = %d\n", seconds); ? sleep(2); seconds = alarm(5); printf("seconds = %d\n", seconds); ? while (1); return 0; } ~~~ ## setitimer函數(定時器) ~~~ #include <sys/time.h> ? int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value); 功能: 設置定時器(鬧鐘)。 可代替alarm函數。精度微秒us,可以實現周期定時。 參數: which:指定定時方式 a) 自然定時:ITIMER_REAL → 14)SIGALRM計算自然時間 b) 虛擬空間計時(用戶空間):ITIMER_VIRTUAL → 26)SIGVTALRM 只計算進程占用cpu的時間 c) 運行時計時(用戶 + 內核):ITIMER_PROF → 27)SIGPROF計算占用cpu及執行系統調用的時間 new_value:struct itimerval, 負責設定timeout時間 struct itimerval { struct timerval it_interval; // 鬧鐘觸發周期 struct timerval it_value; // 鬧鐘觸發時間 }; struct timeval { long tv_sec; // 秒 long tv_usec; // 微秒 } itimerval.it_value: 設定第一次執行function所延遲的秒數 itimerval.it_interval: 設定以后每幾秒執行function ? old_value: 存放舊的timeout值,一般指定為NULL 返回值: 成功:0 失敗:-1 ~~~ ~~~ void myfunc(int sig) { printf("hello\n"); } ? int main() { struct itimerval new_value; ? //定時周期 new_value.it_interval.tv_sec = 1; new_value.it_interval.tv_usec = 0; ? //第一次觸發的時間 new_value.it_value.tv_sec = 2; new_value.it_value.tv_usec = 0; ? signal(SIGALRM, myfunc); //信號處理 setitimer(ITIMER_REAL, &new_value, NULL); //定時器設置 ? while (1); ? return 0; } ~~~
                  <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>

                              哎呀哎呀视频在线观看