日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UNIX再学习 -- 信号处理

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UNIX再学习 -- 信号处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、鬧鐘和睡眠

1、函數 alarm

#include <unistd.h> unsigned int alarm(unsigned int seconds); 返回值:返回 0 或先前所設鬧鐘的剩余秒數

(1)函數功能

使用 alarm 函數可以設置一個定時器(鬧鐘時間),在將來的某個時刻該定時器會超時。當定時器超時時,產生 SIGALRM 信號。如果忽略或不捕捉此信號,則其默認動作是終止調用該 alarm 函數的進程。

(2)參數解析

參數 seconds 的值是產生信號 SIGALRM 需要經過的時鐘秒數。當這個時刻到達時,信號由內核產生,由于進程調度的延遲,所以進程得到控制從而能夠處理該信號還需要一個時間間隔。

(3)函數解析

每個進程只能有一個鬧鐘時間。如果在調用 alarm 時,之前已為該進程注冊的鬧鐘時間還沒有超時,則該鬧鐘時間的余值作為本次 alarm 函數調用的值返回。以前注冊的鬧鐘時間則被新值代替。 如果有以前注冊的尚未超過的鬧鐘時間,而且本次調用的 seconds 值是 0,則取消以前的鬧鐘時間,其余留值仍作為 alarm 函數的返回值。 雖然 SIGALRM 的默認動作是終止進程,但是大多數使用鬧鐘的進程捕捉此信號。如果此時進程要終止,則在終止之前它可以執(zhí)行所需的清理操作。如果我們想捕捉 SIGALRM 信號,則必須在調用 alarm 之前安裝該信號的處理程序。如果我們先調用 alarm,然后在我們能夠安裝 SIGALRM 處理程序之前已接到該信號,那么進程將終止。

(4)示例說明

//示例一 //alarm函數的使用 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <sys/types.h>void fa(int signo) {printf("捕獲到了信號%d\n",signo);//設置1秒后發(fā)送信號alarm(1); }int main(void) {//設置SIGALRM信號進行自定義處理signal(SIGALRM,fa);//設置5秒后發(fā)送SIGALRM信號int res = alarm(5);printf("res = %d\n",res);//0sleep(2);//重新修改為10秒后發(fā)送SIGALRM信號res = alarm(10);printf("res = %d\n",res); //3/*sleep(3);//重新設置為0秒后,取消之前的鬧鐘res = alarm(0);printf("res = %d\n",res); //7*/while(1);return 0; } 輸出結果: res = 0 res = 3 捕獲到了信號 14 捕獲到了信號 14 捕獲到了信號 14 捕獲到了信號 14 捕獲到了信號 14 捕獲到了信號 14 捕獲到了信號 14 捕獲到了信號 14 //示例二 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <time.h>void sigalrm (int signum) {time_t t = time (NULL);struct tm *it = localtime (&t);printf ("\n%02d:%02d:%02d 按回車鍵退出\n", it->tm_hour, it->tm_min, it->tm_sec);alarm (1); }int main (void) {if (signal (SIGALRM, sigalrm) == SIG_ERR)perror ("signal"), exit (1);sigalrm (SIGALRM);getchar ();return 0; } 輸出結果: 14:07:37 按回車鍵退出14:07:38 按回車鍵退出14:07:39 按回車鍵退出14:07:40 按回車鍵退出

(5)示例解析

示例一,alarm 設置 5 秒結束后,發(fā)送 SIGALRM 信號,如果鬧鐘時間沒有結束,又設了鬧鐘,則返回剩余鬧鐘秒數。alarm 參數為 0,則取消鬧鐘。 示例二,sigalrm (SIGARLM);函數運行,執(zhí)行到 alarm (1); 產生 SIGALRM 信號,觸發(fā) signal。然后就開始循環(huán)。

2、函數 pause

#include <unistd.h> int pause(void); 成功阻塞,失敗返回 -1

(1)函數功能

pause 函數使調用進程掛起直至捕捉到一個信號。(無限睡眠)

(2)函數解析

該函數使調用 進程/線程 進入無時限的睡眠狀態(tài),直到有信號終止了調用進程或被其捕獲。 如果有信號被調用進程捕獲,在信號處理函數返回以后,pause 函數才會返回,且返回值為 -1,同時置 errno 為 EINTR,表示阻塞的系統(tǒng)調用被信號中斷。 pause 函數要么不返回,要么返回失敗,不會返回成功。

(3)示例說明

#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <signal.h> #include <errno.h>void sigint (int signo) {printf ("\n中斷符號被發(fā)送\n"); }int main (void) {if (signal (SIGINT, sigint) == SIG_ERR)perror ("signal"), exit (1);printf ("按 ctrl+c 繼續(xù)\n");if (pause () != -1 && errno != EINTR)perror ("pause"), exit (1);printf ("進程繼續(xù)\n");return 0; } 輸出結果: 按 ctrl+c 繼續(xù) ^C 中斷符號被發(fā)送 進程繼續(xù)

(4)示例解析

當有信號被當前進程捕獲,在信號處理函數返回以后,pause函數返回,且返回值為-1,同時置errno為EINTR,表示阻塞的系統(tǒng)調用被信號中斷。

3、函數 sleep

#include <unistd.h>unsigned int sleep(unsigned int seconds); 返回 0 或剩余秒數

(1)函數功能

有限睡眠

(2)參數解析

參數 seconds 以秒為單位的睡眠時限。?

(3)函數解析

該函數使調用進程/線程睡眠 seconds 秒,除非有信號終止了調用進程或被其捕獲 如果有信號被調用進程捕獲,在信號處理函數返回以后,sleep 函數才會返回,且返回值為剩余的秒數,否則該函數將返回 0,表示睡眠充足。如果由于捕獲到某個信號 sleep 提早返回時,返回值是未休眠完的秒數(所要求的時間減去實際休眠時間)。

(4)示例說明

#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <signal.h> #include <errno.h>void sigint (int signo) {printf ("\n中斷符號被發(fā)送\n"); }int main (void) {if (signal (SIGINT, sigint) == SIG_ERR)perror ("signal"), exit (1);printf ("按 ctrl+c 繼續(xù)\n");int res = sleep (60);if (res)printf ("進程被提前%d秒叫醒\n", res);printf ("進程繼續(xù)\n");return 0; } 輸出結果: 按 ctrl+c 繼續(xù) ^C 中斷符號被發(fā)送 進程被提前57秒叫醒 進程繼續(xù)

(5)sleep 函數簡單實現

#include "apue.h"static void sig_alrm(int signo) {/* nothing to do, just returning wakes up sigsuspend() */ }unsigned int my_sleep(unsigned int seconds) {struct sigaction newact, oldact;sigset_t newmask, oldmask, suspmask;unsigned int unslept;/* set our handler, save previous information */newact.sa_handler = sig_alrm;sigemptyset(&newact.sa_mask);newact.sa_flags = 0;sigaction(SIGALRM, &newact, &oldact);/* block SIGALRM and save current signal mask */sigemptyset(&newmask);sigaddset(&newmask, SIGALRM);sigprocmask(SIG_BLOCK, &newmask, &oldmask);alarm(seconds);suspmask = oldmask;/* make sure SIGALRM isn't blocked */sigdelset(&suspmask, SIGALRM);/* wait for any signal to be caught */sigsuspend(&suspmask);/* some signal has been caught, SIGALRM is now blocked */unslept = alarm(0);/* reset previous action */sigaction(SIGALRM, &oldact, NULL);/* reset signal mask, which unblocks SIGALRM */sigprocmask(SIG_SETMASK, &oldmask, NULL);return(unslept); }int main (void) {my_sleep (10);printf ("hello world!\n");return 0; } 輸出結果: hello world!

4、函數 nanosleep

#include <time.h> int nanosleep(const struct timespec *req, struct timespec *rem); 返回值:若休眠到要求的時間,返回 0,若出錯,返回 -1struct timespec {time_t ?tv_sec; ? ? ? ? /* seconds */long ? ?tv_nsec; ? ? ? ?/* nanoseconds */ };

(1)函數功能

nanosleep 函數與 sleep 函數類似,但是提供了納秒級的精度

(2)參數解析

這個函數掛起調用進程,直到要求的時間已經超時或者某個信號中斷了該函數。 req 參數用秒和納秒指定了需要休眠的時間長度。如果某個信號中斷了休眠間隔,進程并沒有終止,rem 參數指向的 timespec 結構就會被設置為未休眠完的時間長度。如果對未休眠完的時間并不感興趣,可以把該參數置為 NULL。
如果系統(tǒng)并不支持納秒這一精度,要求的時間就會取整。因為,nanosleep 函數并不涉及產生任何信號,所以不需要擔心與其函數的交互。 參看:C語言再學習 -- 時間函數

(3)示例說明

#include <stdio.h> #include <time.h> #include <stdlib.h> #include <sys/time.h> int main (void) {struct timespec req, rem;rem.tv_sec = 0; rem.tv_nsec = 0; req.tv_sec = 0; req.tv_nsec = 1000000; int res = 0;struct timeval start,end; gettimeofday( &start, NULL ); /*測試起始時間*/ if (res = (nanosleep (&req, &rem)) == -1)perror ("nanosleep"), exit (1);gettimeofday( &end, NULL ); /*測試終止時間*/ int timeuse = (end.tv_usec - start.tv_usec); printf("運行時間為:%d us\n",timeuse); return 0; } 輸出結果: 運行時間為:1173 us

5、sleep、usleep 和 nanosleep 區(qū)別

參看:linux下nanosleep() & sleep()的區(qū)別 參看:關于短延遲 sleep usleep nanosleep select 時間單位還有:秒(s)、毫秒(ms)、微秒 (μs)、納秒(ns)、皮秒(ps)、飛秒(fs)、阿秒、渺秒 ? ?? usleep 和 sleep 區(qū)別在于精度,ulseep 為 微妙級,sleep 為秒級。 sleep() 和 nanosleep() 都是使進程睡眠一段時間后被喚醒,但是二者的實現完全不同。
Linux 中并沒有提供系統(tǒng)調用 sleep(),sleep() 是在庫函數中實現的,它是通過調用 alarm() 來設定報警時間,調用sigsuspend() 將進程掛起在信號 SIGALARM 上。
nanosleep() 則是 Linux中 的系統(tǒng)調用
,它是使用定時器來實現的,該調用使調用進程睡眠,并往定時器隊列上加入一個 timer_list 型定時器,time_list 結構里包括喚醒時間以及喚醒后執(zhí)行的函數,通過 nanosleep() 加入的定時器的執(zhí)行函數僅僅完成喚醒當前進程的功能。系統(tǒng)通過一定的機制定時檢查這些隊列(比如通過系統(tǒng)調用陷入核心后,從核心返回用戶態(tài)前,要檢查當前進程的時間片是否已經耗盡,如果是則調用 schedule() 函數重新調度,該函數中就會檢查定時器隊列,另外慢中斷返回前也會做此檢查),如果定時時間已超過,則執(zhí)行定時器指定的函數喚醒調用進程。當然,由于系統(tǒng)時間片可能丟失,所以 nanosleep() 精度也不是很高。

二、信號集

1、什么是信號集

顧名思義,多個信號組成的信號集合謂之信號集。 系統(tǒng)內核用 sigset_t 類型表示信號集。sigset_t 類型是一個結構體,但該結構體中只有一個成員,是一個包含 32 個元素的整數數組。 ?/usr/include/i386-linux-gnu/bits/sigset.h 中有如下類型定義: /* A `sigset_t' has a bit for each signal. */# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) typedef struct{unsigned long int __val[_SIGSET_NWORDS];} __sigset_t; 可以把 sigset_t 類型看成一個由 1024 個二進制位組成的大整數。其中的每一位對應一個信號,其實目前遠沒有那么多信號。某位為 1 就表示信號集中有此信號,反之為 0 就是無此信號。當需要同時操作多個信號時,常以 sigset_t 作為函數的參數或返回值的類型。

2、信號集函數

#include <signal.h> int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int signum); int sigdelset(sigset_t *set, int signum); 這 4 個函數返回值:若成功,返回 0,;若出錯,返回 -1 int sigismember(const sigset_t *set, int signum); 返回值:若真,返回 1;若假,返回 0

(1)函數 sigemptyset

清空信號集,即將信號集的全部信號位清 0. 例如: sigset_t sigset; if (sigemptyset (&sigset) == -1)perror ("sigemptyset"), exit (1);

(2)函數 sigfillset

填滿信號集,即將信號集的全部信號位置 1. 例如: sigset_t sigset; if (sigfillset (&sigset) == -1)perror ("sigfillset"), exit (1);

(3)函數 sigaddset

加入信號,即將信號集中與指定信號編號對應的信號位置 1. 例如: if (sigaddset (&sigset, SIGINT))perror ("sigaddset"), exit (1);

(4)函數 sigdelset

刪除信號,即將信號集中與指定信號編號對應的信號位清 0. 例如: if (sigdelest (&sigset, SIGINT))perror ("sigdelset"), exit (1);

(5)函數 sigismember

判斷信號集中是否有某信號,即檢查信號集中與指定信號編號對應的信號位是否為 1. 例如: if (sigismember (&sigset, SIGINT) == 1)printf ("信號集中有 SIGINT 信號\n");

(6)示例說明

//信號集的操作 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h>int main(void) {sigset_t set;printf("set = %lu\n",set);printf("sizeof(sigset_t) = %d\n",sizeof(sigset_t));//清空信號集sigemptyset(&set);printf("set = %lu\n",set);//0//增加信號到信號集中sigaddset(&set,2);// 0000 0010 => 1*2 = 2printf("set = %lu\n",set);//2sigaddset(&set,3);// 0000 0110 => 4+2 = 6printf("set = %lu\n",set);//6sigaddset(&set,7);// 0100 0110 => 64+4+2 = 70printf("set = %lu\n",set);//70//從信號集中刪除信號3sigdelset(&set,3);// 0100 0010 => 64 + 2 = 66printf("set = %lu\n",set);//66//判斷信號是否存在if(sigismember(&set,2)){printf("信號2存在\n");}if(sigismember(&set,3)){printf("信號3存在\n");}if(sigismember(&set,7)){printf("信號7存在\n");}//填滿信號集sigfillset(&set);printf("set = %lu\n",set);//很大的數return 0; } 輸出結果: set = -1078591106 sizeof(sigset_t) = 128 set = 0 set = 2 set = 6 set = 70 set = 66 信號2存在 信號7存在 set = 2147483647

3、信號集函數實現 (了解)

#include <signal.h> #include <errno.h>/** <signal.h> usually defines NSIG to include signal number 0.*/ #define SIGBAD(signo) ((signo) <= 0 || (signo) >= NSIG)int sigaddset(sigset_t *set, int signo) {if (SIGBAD(signo)) {errno = EINVAL;return(-1);}*set |= 1 << (signo - 1); /* turn bit on */return(0); }int sigdelset(sigset_t *set, int signo) {if (SIGBAD(signo)) {errno = EINVAL;return(-1);}*set &= ~(1 << (signo - 1)); /* turn bit off */return(0); }int sigismember(const sigset_t *set, int signo) {if (SIGBAD(signo)) {errno = EINVAL;return(-1);}return((*set & (1 << (signo - 1))) != 0); }

三、信號屏蔽

1、遞送、未決與掩碼

當信號產生時,系統(tǒng)內核會在其所維護的進程表中,為特定的進程設置一個與該信號相對應的標志位,這個過程就叫做遞送 信號從產生到完成遞送之間存在一定的時間間隔,處于這段時間間隔中的信號狀態(tài)稱為未決 每個進程都有一個信號掩碼,它實際上是一個信號集,位于該信號集中的信號一旦產生,并不會被遞送給相應的進程,而是會被阻塞在未決狀態(tài)。 在信號處理函數執(zhí)行期間,這個正在被處理的信號總是處于信號掩碼中,如果又有該信號產生,則會被阻塞,直到上一個針對該信號的處理過程結束以后才會被遞送。 當進程正在執(zhí)行類似更新數據庫這樣的敏感任務時,可能不希望被某些信號中斷。這時可以通過信號掩碼暫時屏蔽而非忽略掉這些信號,使其一旦產生即被阻塞于未決狀態(tài),待特定任務完成后,再回過頭來處理這些信號。

2、設置掩碼與檢測未決

(1)設置調用進程的信號掩碼

#include <signal.h> int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); 返回值:若成功,返回 0;若出錯,返回 -1

1》》參數解析

參數 how 為修改信號掩碼的方式,可取以下值 ? ? SIG_BLOCK ? ? ? ?將 sigset 中的信號加入當前信號掩碼 ? ? SIG_UNBLOCK ?從當前信號掩碼中刪除 sigset 中的信號 ? ? SIG_SETMASK ? 把 sigset 設置成當前信號掩碼 參數 sigset 為信號集,取 NULL 則忽略此參數 參數 oldset 為輸出原信號掩碼,取 NULL 則忽略此參數

2》》示例說明

#include <stdio.h> #include <signal.h> #include <stdlib.h> #include <unistd.h>int main() {sigset_t sigset;sigemptyset (&sigset);sigaddset (&sigset, SIGINT);sigaddset (&sigset, SIGQUIT);sigset_t oldset;if (sigprocmask (SIG_SETMASK, &sigset, &oldset) == -1){perror ("sigprocmask");exit (EXIT_FAILURE);}if (sigpending (&sigset) == -1){perror ("sigpending");exit (EXIT_FAILURE);}if (sigismember (&sigset, SIGINT) == 1)printf ("SIGINT信號未決\n");while (1)pause ();return 0; } 輸出結果: 按 ctrl+c 和 ctrl+\ 失效

(2)獲取調用進程的未決信號集

#include <signal.h> int sigpending(sigset_t *set); 返回值:成功返回 0,失敗返回 -1

1》》函數解析

sigpending 函數返回一信號集,對于調用進程而言,其中的各信號是阻塞不能遞送的,因而也一定是當前未決的。該信號集通過 set 參數返回。

2》》示例說明

#include "apue.h"static void sig_quit(int);int main(void) {sigset_t newmask, oldmask, pendmask;if (signal(SIGQUIT, sig_quit) == SIG_ERR)err_sys("can't catch SIGQUIT");/** Block SIGQUIT and save current signal mask.*/sigemptyset(&newmask);sigaddset(&newmask, SIGQUIT);if (sigprocmask(SIG_BLOCK, &newmask, &oldmask) < 0)err_sys("SIG_BLOCK error");sleep(5); /* SIGQUIT here will remain pending */if (sigpending(&pendmask) < 0)err_sys("sigpending error");if (sigismember(&pendmask, SIGQUIT))printf("\nSIGQUIT pending\n");/** Restore signal mask which unblocks SIGQUIT.*/if (sigprocmask(SIG_SETMASK, &oldmask, NULL) < 0)err_sys("SIG_SETMASK error");printf("SIGQUIT unblocked\n");sleep(5); /* SIGQUIT here will terminate with core file */exit(0); }static void sig_quit(int signo) {printf("caught SIGQUIT\n");if (signal(SIGQUIT, SIG_DFL) == SIG_ERR)err_sys("can't reset SIGQUIT"); } 輸出結果: ^\^\^\ SIGQUIT pending caught SIGQUIT SIGQUIT unblocked ^\^\退出 (核心已轉儲)

3》》示例解析

進程阻塞 SIGQUIT 信號,保存了當前信號屏蔽字(以便以后恢復),然后休眠 5 秒。在此期間所產生的退出信號 SIGQUIT 都被阻塞,不遞送至該進程,直到該信號不再被阻塞。在 5 秒休眠結束后,檢查該信號是否是未決的,然后將 SIGQUIT 設置為不再阻塞。

(3)可靠和不可靠信號的屏蔽

對于可靠信號,通過 sigprocmask 函數設置信號掩碼以后,每種被屏蔽信號中的每個信號都會被阻塞,并按先后順序排隊,一旦解除屏蔽,這些信號會被依次遞送。
對于不可靠信號,通過 sigprocmask 函數設置信號掩碼以后,每種被屏蔽信號中只有第一個會被阻塞,并在解除屏蔽后被遞送,其余的則全部丟失。

四、信號處理與發(fā)送

1、信號處理函數 sigaction

#include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact); 返回值:成功返回 0,失敗返回 -1

(1)函數功能

sigaction 函數的功能是檢查或修改(或檢查并修改)與指定信號相關聯(lián)的處理動作。此函數取代了 UNIX 早期版本使用的 signal 函數。可以理解為,是 signal 函數的增強版。

(2)參數解析

signum:信號編號act:信號行為oldact:輸出原信號行為,可置 NULL
當 signum 信號被遞送時,按 act 所描述的行為響應。若 oldact 非 NULL,則通過該參數輸出原來的響應行為。sigaction 函數通過信號行為結構類型 sigaction 來描述對一個信號的響應行為。struct sigaction { 1 void (*sa_handler)(int); =>函數指針,用于設置信號的處理方式,與signal函數中第二個參數相同,SIG_IGW,SIG_DFL函數名 2 void (*sa_sigaction)(int, siginfo_t */*結構體指針*/, void *);=>函數指針,作為第二種處理信號的方式 是否使用該處理方式,依賴與sa_flags的值 3 sigset_t sa_mask;=>用于設置在信號處理函數的執(zhí)行期間,需要屏蔽的信號=>自動屏蔽與正在處理的信號相同的信號 4 int sa_flags;=>處理的標志 =>SA_SIGINFO 表示采用第二個函數指針處理信號=>SA_NODEFER 表示解除對相同信號的屏蔽=>SA_RESETHAND 表示自定義處理信號后恢復默認處理方式 5 void (*sa_restorer)(void); => 保留成員,暫時不是用,目前置NULL };其中第二個函數指針的第二個參數類型如下:
struct siginfo_t { pid_t si_pid; /* Sending process ID */ //發(fā)送信號進程的ID sigval_t si_value; /* Signal value */ //發(fā)送信號時的附加數據 };

(3)示例說明

示例一:增減信號掩碼

//使用sigaction函數處理信號 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <sys/types.h>void fa(int signo) {printf("捕獲到了信號%d\n",signo);sleep(5);printf("信號處理完畢\n"); }int main(void) {//定義結構體變量并且進行初始化struct sigaction action = {};//指定函數指針的初始值action.sa_handler = fa;//清空信號集,然后放入信號3sigemptyset(&action.sa_mask);sigaddset(&action.sa_mask,3);//設置處理信號的標志//解除對相同信號的屏蔽,信號2//action.sa_flags = SA_NODEFER;//自定義處理后恢復默認處理方式action.sa_flags = SA_RESETHAND;//使用sigaction對信號2自定義處理sigaction(2,&action,NULL);while(1);return 0; } 輸出結果: ^C捕獲到了信號2 ^\^\^\^\^\^\^\信號處理完畢 退出 (核心已轉儲)

示例二:一次性信號處理

#include <stdio.h> #include <signal.h> #include <stdlib.h> #include <unistd.h>void oldsigint(int signum) {printf ("\n%d進程:收到%d信號\n", getpid (), signum); }int main() {struct sigaction sigact = {};sigact.sa_handler = oldsigint;sigaddset (&sigact.sa_mask, SIGQUIT);sigact.sa_flags = SA_NODEFER | SA_RESETHAND;if (sigaction (SIGINT, &sigact, NULL) == -1){perror ("sigaction");exit (EXIT_FAILURE);}pause();return 0; } 輸出結果: ^C 2512進程:收到2信號 ^C

示例三:提供更多信息的信號處理函數

#include <stdio.h> #include <signal.h> #include <stdlib.h> #include <unistd.h>void newsigint (int signum, siginfo_t* siginf, void* reserved) {printf ("%d進程給我發(fā)了一個SIGINT信號\n", siginf->si_pid); }int main() {struct sigaction sigact = {};sigact.sa_sigaction = newsigint;sigaddset (&sigact.sa_mask, SIGQUIT);sigact.sa_flags = SA_NODEFER | SA_SIGINFO;if (sigaction (SIGINT, &sigact, NULL) == -1){perror ("sigaction");exit (EXIT_FAILURE);}pause();return 0; } 輸出結果: ^C0進程給我發(fā)了一個SIGINT信號

(4)用 sigaction 實現 signal 函數

#include <stdio.h> #include <signal.h> #include "apue.h" /* Reliable version of signal(), using POSIX sigaction(). */ Sigfunc * signal_my(int signo, Sigfunc *func) {struct sigaction act, oact;act.sa_handler = func;sigemptyset(&act.sa_mask);act.sa_flags = 0;if (signo == SIGALRM) { #ifdef SA_INTERRUPTact.sa_flags |= SA_INTERRUPT; #endif} else {act.sa_flags |= SA_RESTART;}if (sigaction(signo, &act, &oact) < 0)return(SIG_ERR);return(oact.sa_handler); }void fa (int signo) {printf ("捕獲到了信號%d\n", signo); }int main (void) {signal_my (2, fa); sleep (5);return 0; } 輸出結果: ^C捕獲到了信號2 另一個版本,可阻止被中斷的系統(tǒng)調用重啟動。#include "apue.h"Sigfunc * signal_intr(int signo, Sigfunc *func) {struct sigaction act, oact;act.sa_handler = func;sigemptyset(&act.sa_mask);act.sa_flags = 0; #ifdef SA_INTERRUPTact.sa_flags |= SA_INTERRUPT; #endifif (sigaction(signo, &act, &oact) < 0)return(SIG_ERR);return(oact.sa_handler); }

2、信號發(fā)送函數 sigqueue

#include <signal.h> int sigqueue(pid_t pid, int sig, const union sigval value); 返回值:成功返回 0;失敗返回 -1

(1)函數功能

表示向指定進程發(fā)送指定的信號和附加數據

(2)參數解析

pid:接收信號進程的 PID sig:信號編號 value:附加數據 注意,該參數的類型 sigval 是一個聯(lián)合: union sigval {int sival_int;//整數void *sival_ptr;//地址 };

(3)示例說明

//sigqueue函數和sigaction函數的使用 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <signal.h>void fa(int signo,siginfo_t* info,void* p) {printf("進程%d發(fā)送來了信號%d,附加數據是:%d\n",info->si_pid,signo,info->si_value); }int main(void) {//定義結構體變量進行初始化struct sigaction action = {};//給第二個函數指針進行初始化action.sa_sigaction = fa;//給處理標志進行賦值//表采用結構中第二個函數指針處理action.sa_flags = SA_SIGINFO;//使用sigaction對信號40自定義處理sigaction(40,&action,NULL);//創(chuàng)建子進程給父進程發(fā)信號和數據pid_t pid = fork();if(-1 == pid){perror("fork"),exit(-1);}if(0 == pid) //子進程{int i = 0;for(i = 0; i < 100; i++){//定義聯(lián)合進行初始化union sigval v;v.sival_int = i;//發(fā)送信號和附加數據sigqueue(getppid(),40,v);}sleep(1);exit(100);//終止子進程}//父進程等待處理信號和附加數據while(1);return 0; }輸出結果: 進程2721發(fā)送來了信號40,附加數據是:0 進程2721發(fā)送來了信號40,附加數據是:1 進程2721發(fā)送來了信號40,附加數據是:2 。。。。 進程2721發(fā)送來了信號40,附加數據是:97 進程2721發(fā)送來了信號40,附加數據是:98 進程2721發(fā)送來了信號40,附加數據是:99

五、函數 sigsetjmp 和 siglongjmp

暫時不講

六、 函數 sigsuspend

暫時不講

七、未講部分

中斷的系統(tǒng)調用 ?未講 可靠信號術語和語義 ?未講 函數 system ?未講 函數 clock_nanosleep ?未講 作業(yè)控制信號 ?未講 信號名和編號 ?未講 信號這一章,內容有點雜,好多東西沒有用過,所以不太熟悉。

總結

以上是生活随笔為你收集整理的UNIX再学习 -- 信号处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

激情五月六月婷婷 | 在线电影 你懂得 | 在线免费观看视频一区二区三区 | 中文字幕乱码亚洲精品一区 | 欧美日韩免费观看一区=区三区 | 免费视频xnxx com | 亚洲一级片 | 国产精品一区二区在线 | 一区二区三区在线不卡 | av在线观 | 日韩高清免费电影 | 六月色丁 | 特黄特色特刺激视频免费播放 | 91亚洲精品在线观看 | 久久精品一区 | 欧美精品网站 | 视频91在线 | 欧美三级高清 | 欧洲视频一区 | 色婷婷国产精品一区在线观看 | 国产一级做a爱片久久毛片a | 国产人免费人成免费视频 | 久久久精品成人 | av黄色在线观看 | 国产a视频免费观看 | 最近中文字幕完整视频高清1 | 91在线精品秘密一区二区 | 国产三级精品在线 | 91精品国产99久久久久久红楼 | 综合天堂av久久久久久久 | 91热爆视频 | 一区二区三区四区五区在线 | 99视频久久| 国产美女黄网站免费 | 亚洲午夜精 | 99久久精品国产毛片 | 在线观看91 | 九九免费精品视频 | 99精品视频在线 | 99久久久久 | 激情五月婷婷激情 | 国产精品v欧美精品v日韩 | 国产精品中文字幕av | 日韩乱码中文字幕 | 中文字幕最新精品 | 中文字幕在线视频第一页 | 91漂亮少妇露脸在线播放 | 国产精品久久久久久久av大片 | 狠狠色丁香婷婷综合橹88 | 国产成人久久久77777 | 日韩艹| 天天干 天天摸 天天操 | 99亚洲精品 | av在线免费网站 | 欧美午夜精品久久久久久孕妇 | 六月丁香婷婷网 | 欧美在线视频一区二区三区 | 热re99久久精品国产66热 | 欧美激情精品久久久久 | 天海冀一区二区三区 | 精品美女久久久久 | 国产99久久久国产精品 | 欧美日韩亚洲精品在线 | 久久久久国产精品免费免费搜索 | 久久影院一区 | 视频一区二区在线观看 | 亚洲午夜精品久久久久久久久久久久 | 成人天堂网 | 日操操| 国产精品99久久久久久人免费 | 日本在线精品视频 | 最近日本韩国中文字幕 | 亚洲午夜精品在线观看 | 国产一区精品在线观看 | 国产在线免费av | 伊人婷婷网 | 国产精彩视频一区 | 91天堂影院| 一区二区三区观看 | 在线中文字幕电影 | 最近中文字幕在线播放 | 免费看国产黄色 | 午夜精品久久久久久久99无限制 | 五月天综合色激情 | 久久人人97超碰国产公开结果 | 久久艹人人 | 亚洲精品乱码久久久久久蜜桃91 | 91xav | 久久久精品一区二区三区 | 亚洲乱码国产乱码精品天美传媒 | 欧美一区二区三区不卡 | 天堂久久电影网 | 五月婷婷,六月丁香 | 韩国一区二区在线观看 | 免费网站黄色 | 天天色天天射天天操 | 国产精品69av | 香蕉91视频| 国产精品av免费在线观看 | 国产日韩欧美在线一区 | av中文字幕剧情 | 日韩一级片大全 | 日韩精品不卡在线观看 | 亚洲干视频在线观看 | 亚洲 欧美 国产 va在线影院 | 中文字幕在线观看视频一区二区三区 | 国产一级一片免费播放放 | 成年人在线免费视频观看 | 亚洲成人中文在线 | 亚洲欧美日韩在线一区二区 | 99久久精品免费看国产麻豆 | 久久久久久免费 | 亚洲.www | 人人揉人人揉人人揉人人揉97 | 成人午夜精品福利免费 | 天堂中文在线视频 | 久久精品96 | 久久久久久久久久网 | 在线a亚洲视频播放在线观看 | 激情网在线观看 | 国产精品久久久久久久久久久久久 | 欧美91在线 | 亚洲精品国产欧美在线观看 | 欧美一区二区三区免费看 | 精品在线视频观看 | 亚洲国产97在线精品一区 | 国产 字幕 制服 中文 在线 | 91桃色在线免费观看 | 在线中文字幕网站 | 国产精品1024 | 久草资源在线 | 欧美日韩国产一区二区在线观看 | 美女性爽视频国产免费app | 四虎成人精品 | 亚洲区视频在线 | 欧美-第1页-屁屁影院 | 久久美女精品 | 国产91在线免费视频 | 香蕉久久久久 | 久久人人爽人人爽人人 | 久久久精品视频网站 | 在线国产一区二区三区 | 精品久久久久久综合日本 | 狠狠躁日日躁 | 日本中文字幕高清 | 九九免费在线观看 | 欧美与欧洲交xxxx免费观看 | 永久免费的av电影 | 在线影视 一区 二区 三区 | 久久手机免费观看 | 日韩久久午夜一级啪啪 | 99999精品视频 | 精品一区二区影视 | 免费视频久久久久 | 久久综合久久鬼 | 国产精品原创av片国产免费 | 91夫妻自拍 | 有码中文字幕在线观看 | 在线观看精品 | 婷婷国产在线 | 97在线视频免费看 | 成人sm另类专区 | 国产精品免费观看国产网曝瓜 | 99久久精品免费看 | 国产欧美在线一区二区三区 | 成人免费看片98欧美 | 国产高清中文字幕 | 久久久久久久久久久免费 | 久久久久久免费网 | 波多野结衣在线观看一区二区三区 | 成人黄色中文字幕 | 成人免费网站在线观看 | 亚洲精品网页 | 日日精品| 毛片网站在线看 | 久久国产剧场电影 | 91香蕉视频在线 | 国产三级午夜理伦三级 | 国产精品视频久久 | 三级免费黄| 国产91九色视频 | 国产免费三级在线观看 | 一区二区精品在线 | 久久久午夜电影 | 色综合久久综合网 | av免费看在线 | 久久99亚洲精品 | 在线观看视频三级 | 久草在线免费播放 | 91精品国产一区二区在线观看 | 色在线网| 国产一区二区久久久 | 成人免费观看av | av免费成人| 97超碰网 | 国产黄色免费看 | 99性视频| 亚洲人精品午夜 | 91av超碰| 日本少妇久久久 | 精品国产成人av在线免 | 日韩亚洲精品电影 | 欧美专区日韩专区 | 亚洲一级影院 | 国产乱老熟视频网88av | 波多野结衣视频一区 | 国产片网站 | 韩国av一区二区三区 | 一区二区三区高清 | 久久不见久久见免费影院 | 国产美女在线精品免费观看 | 在线免费av观看 | 欧美精品生活片 | 久久久久国产免费免费 | 久久久免费在线观看 | 亚洲天堂va| a久久久久久 | 91完整版在线观看 | 97超碰在线人人 | 91福利视频久久久久 | 色欧美88888久久久久久影院 | 久久99热国产| 国产精品永久在线观看 | 99久久99热这里只有精品 | 黄色免费看片网站 | 亚洲最新精品 | 国产伦精品一区二区三区在线 | www.狠狠干 | 丁香五月网久久综合 | 六月婷婷网 | 久草在线视频中文 | 精品国产123 | 一本—道久久a久久精品蜜桃 | 日日干美女 | 久久99久久99 | 99国产免费网址 | 久久天堂亚洲 | 国产亚洲精品中文字幕 | 欧美aa一级 | 黄色av网站在线观看 | 国产一区二区三区免费视频 | 午夜精品视频一区二区三区在线看 | 黄色成人av在线 | 狠狠色丁香婷婷综合橹88 | 天天操比 | 久久久久成人精品 | 丁香久久综合 | 色噜噜狠狠色综合中国 | 久久国产成人午夜av影院潦草 | 国产精品一区二区三区四区在线观看 | 亚洲精品18p | 日本精品在线视频 | 九九九九热精品免费视频点播观看 | 一级免费av | 日本中文字幕一二区观 | www久久久 | 手机看国产毛片 | 69av国产 | av软件在线观看 | 最近中文字幕国语免费av | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 久久夜夜爽 | 欧美成人日韩 | 欧美激情第一区 | 97国产精品一区二区 | 色婷在线 | 色天天综合网 | 天天干天天操天天干 | 国产精品一区二区三区免费视频 | 国产香蕉视频在线观看 | 国产一区二区三区网站 | 天天爱天天射天天干天天 | 国产精品美女久久久久久免费 | 亚洲午夜久久久久久久久 | 九九热在线精品视频 | 国产在线播放一区 | 综合在线色 | 国产精品久久久久久久毛片 | 久久黄视频 | 国产精品久久网站 | 日韩黄色免费电影 | 午夜精品久久久久久久久久 | 五月婷婷开心中文字幕 | 人人擦 | 99热只有精品在线观看 | 久久国产色 | 美女视频免费精品 | 人人藻人人澡人人爽 | 中文字幕 91 | 久久国产精品一区二区三区四区 | 久久综合久久综合这里只有精品 | 黄色一级性片 | 色.com| 九色视频网 | 99视频导航 | 91av网站在线观看 | 国产精品一区二区精品视频免费看 | 黄色片网站 | 日韩成人黄色 | 精品夜夜嗨av一区二区三区 | 婷婷五天天在线视频 | 中文字幕乱码在线播放 | 成人高清在线 | 日韩高清av| 精品福利视频在线观看 | 欧美精品一区在线发布 | 五月婷婷丁香在线观看 | 久久a免费视频 | 天天搞天天干天天色 | 欧美一区二区三区激情视频 | 99在线看 | 精品久久久久久久久久 | 亚洲国产成人在线播放 | 天天天天天天操 | 香蕉视频在线网站 | 在线观看黄色小视频 | 91一区啪爱嗯打偷拍欧美 | 国产美女在线免费观看 | 亚洲国产成人在线 | 成人一级免费电影 | 国内视频1区 | 亚洲国产美女久久久久 | 视频成人免费 | 午夜久久影视 | 精品av在线播放 | 色偷偷88888欧美精品久久久 | 最近2019好看的中文字幕免费 | 黄色天堂在线观看 | 亚洲精品午夜视频 | 亚洲资源在线观看 | 少妇精品久久久一区二区免费 | 国产色婷婷在线 | 激情综合网五月婷婷 | 亚洲精品tv久久久久久久久久 | 久久另类小说 | 成人久久久久久久久久 | 国产精品综合av一区二区国产馆 | 91色在线观看视频 | 91成人精品一区在线播放69 | 中文字幕专区高清在线观看 | 99久久精品电影 | 99成人免费视频 | 色婷婷伊人 | 国产中出在线观看 | 国产欧美最新羞羞视频在线观看 | 日本黄色大片免费看 | 在线观看中文字幕第一页 | 亚洲视频专区在线 | 狠狠干天天射 | 国产在线无| 在线亚洲成人 | 黄色国产大片 | 激情婷婷亚洲 | 亚洲欧美日韩国产一区二区 | 99久久精品国产网站 | 三上悠亚一区二区在线观看 | 欧美色综合久久 | 欧美日韩国产免费视频 | 午夜视频在线观看欧美 | 亚洲视频中文 | 超级碰碰碰免费视频 | 99日韩精品| 国产精品不卡av | 免费毛片一区二区三区久久久 | 中文字幕精品一区二区精品 | 亚洲国产综合在线 | www.夜夜骑.com| 国产精品自产拍在线观看蜜 | 最近久乱中文字幕 | 国产手机在线视频 | 日韩精品一区二区三区三炮视频 | 色综合咪咪久久网 | 国产真实在线 | 国产美女在线精品免费观看 | 人人添人人澡人人澡人人人爽 | 中文一区在线 | 久久免费精品一区二区三区 | 成人av影院在线观看 | 亚洲国产高清在线 | 欧美一级高清片 | 精品久久网站 | 国产99自拍 | 天天婷婷 | 久久公开免费视频 | 久久夜视频 | 国产精品资源在线 | 黄色日本免费 | 国产麻豆果冻传媒在线观看 | av电影免费在线 | 亚洲 欧美变态 另类 综合 | 五月婷婷六月丁香 | 久久综合九色综合欧美就去吻 | 蜜桃视频精品 | 视频国产精品 | 婷婷av电影 | 日韩在线观看中文 | 99视频免费观看 | 久久国产香蕉视频 | 九九九热| 日韩一级网站 | 99精品在线免费视频 | 天天射综合 | 婷婷深爱五月 | 国内精品中文字幕 | 精品视频在线免费 | 欧美久久久一区二区三区 | 尤物九九久久国产精品的分类 | 亚州精品成人 | 毛片永久免费 | 日韩有码第一页 | 久久99精品久久久久久久久久久久 | 久久精品国产v日韩v亚洲 | 亚洲精品久久久久999中文字幕 | 日韩黄色中文字幕 | 久草精品视频在线看网站免费 | 91视频中文字幕 | 国产一级视频免费看 | 色综合色综合久久综合频道88 | av不卡中文| 欧美一级大片在线观看 | 欧美伦理电影一区二区 | 91亚洲精品久久久中文字幕 | 国产三级在线播放 | h视频在线看| 精品一区二区久久久久久久网站 | 日日精品 | 国产精品九九视频 | 在线观看91av| 亚洲黄色片| 91禁在线看| 亚洲国产成人精品电影在线观看 | 日本黄色免费观看 | 18久久久 | 97国产大学生情侣酒店的特点 | 丁香花在线视频观看免费 | 在线观看黄污 | www最近高清中文国语在线观看 | 91豆花在线观看 | 亚洲精品一区二区三区新线路 | 很黄很色很污的网站 | 97精品国产一二三产区 | 久久综合国产伦精品免费 | 男女啪啪网站 | 99热九九这里只有精品10 | 国产福利一区二区三区在线观看 | 久久亚洲私人国产精品 | 欧美伦理一区二区 | 91在线免费视频 | 国产成人91 | 免费观看黄色av | 成年免费在线视频 | 中文字幕精品一区二区三区电影 | 国产视频97 | 久久尤物电影视频在线观看 | 在线观看免费av网 | 免费网站看av片 | 99热99| 99久久国产免费免费 | 久久艹综合 | 国产精品久久久久久高潮 | 四月婷婷在线观看 | 九九影视理伦片 | 日韩在线欧美在线 | 美女视频黄,久久 | 色婷婷成人网 | 久久久午夜精品理论片中文字幕 | 亚洲国产精品女人久久久 | 亚洲欧美日韩国产一区二区三区 | 国产在线欧美在线 | 欧美日韩国产区 | 日韩综合第一页 | 国产97av| 久久一区二区三区四区 | 伊人国产在线观看 | 波多野结衣一区二区 | 91香蕉视频污在线 | 婷婷九月激情 | 日韩精品免费一区二区在线观看 | 97成人精品| 久草网站在线 | 91看片黄色 | 在线精品亚洲一区二区 | 免费观看的黄色片 | 免费视频一级片 | 免费观看www7722午夜电影 | 日韩一级电影网站 | 亚洲精品在线视频 | 免费看91的网站 | 成人性生交大片免费看中文网站 | 中文字幕888 | 特级片免费看 | 91人人爽久久涩噜噜噜 | 99久久精品免费看国产一区二区三区 | 69久久久 | 日日干天天干 | 有码中文字幕在线观看 | 免费精品视频在线 | 精品国产精品一区二区夜夜嗨 | 亚洲精品麻豆 | 中文字幕在线视频精品 | 亚洲精品久久久久久久不卡四虎 | 成人97人人超碰人人99 | 久久国产精品免费视频 | 黄色av在 | 国产精品午夜8888 | 99免费看片 | 热99久久精品 | 成年人电影免费在线观看 | 美女视频久久久 | 久久精品在线免费观看 | 国产精品美女久久久 | 91丨九色丨国产丨porny精品 | 麻豆视频成人 | 狠狠地日| 91成人精品一区在线播放69 | 极品中文字幕 | 国产成人久久精品亚洲 | 欧美日韩91 | 国产成人亚洲在线电影 | 亚洲一区日韩精品 | 国产九九九视频 | 久久伦理电影 | 久久免费高清视频 | 亚洲国产日韩在线 | 亚洲国产免费网站 | 97成人免费 | 日本狠狠色| 九九视频热 | 欧美精品一级视频 | 人人爽人人av | 69亚洲视频 | 99av在线视频 | 99免费在线视频 | 玖玖爱国产在线 | 国产区免费在线 | 亚洲激情av | 天天射天天干天天爽 | 免费看色网站 | 国产精品成人一区二区三区吃奶 | 在线播放日韩av | 免费热情视频 | а中文在线天堂 | 狠狠操导航 | 欧美日韩1区2区 | 美女视频黄在线观看 | 欧美日韩中文国产一区发布 | 色综合五月天 | 三级av网站 | 99激情网| 色婷婷综合久色 | 天天综合色网 | 精品国产一区二区三区免费 | 黄色影院在线播放 | 麻豆高清免费国产一区 | 99r在线视频 | 免费又黄又爽的视频 | 99精品在这里| 超碰人在线| 国产在线观看你懂得 | 国产精品av在线 | 国模一区二区三区四区 | 天天干.com | 69亚洲乱| 亚洲视频免费在线观看 | 国产精品久久久久毛片大屁完整版 | 欧美日韩不卡一区二区 | 国产精品自产拍在线观看 | 成全免费观看视频 | 久草在线视频首页 | 精品亚洲欧美无人区乱码 | 欧美韩国在线 | 久久99婷婷 | 国产涩涩在线观看 | 亚洲精品网址在线观看 | 国产白浆在线观看 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 亚洲第一区在线观看 | 国产精品久久久久婷婷 | 777久久久 | 成人 亚洲 欧美 | av成人免费在线 | 国产一级片视频 | 大荫蒂欧美视频另类xxxx | 一级黄毛片 | 日韩精品一区二区三区丰满 | 国产一级片免费播放 | 91在线免费观看网站 | 国语精品久久 | 久久亚洲综合国产精品99麻豆的功能介绍 | 在线看片成人 | 免费看一级片 | 日韩精品一区二区在线观看 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 91精品国产99久久久久久红楼 | 96久久精品 | 97视频成人| 日韩电影精品 | 久久久久久久久久久久亚洲 | 碰天天操天天 | 亚洲精品国精品久久99热 | 99r精品视频在线观看 | 亚洲国产精品电影 | 干综合网 | a资源在线| 热久久精品在线 | 精品96久久久久久中文字幕无 | 日韩在线网址 | 国产日韩精品欧美 | 黄色一级在线观看 | 久久久三级视频 | 国产精品不卡在线观看 | 性色av一区二区三区在线观看 | 久久这里只有精品视频99 | 在线免费看黄网站 | 免费在线观看毛片网站 | 天天操天天摸天天射 | 国产黄色av网站 | 久草在线最新 | 麻豆91小视频 | 日韩xxxx视频 | 嫩草91影院 | 欧美二区视频 | 成人高清在线观看 | 亚洲精品国产精品99久久 | 亚洲成a人片在线观看网站口工 | 精品久久国产 | 婷婷网址 | 国产理论一区二区三区 | 中文区中文字幕免费看 | 激情在线五月天 | 人人爽夜夜爽 | 久久久久综合精品福利啪啪 | 91精品久久久久久久91蜜桃 | 国产精品短视频 | 男女精品久久 | 99高清视频有精品视频 | 久久精品视频免费观看 | 天天操狠狠干 | 精品亚洲网 | 亚洲一区免费在线 | 九草在线视频 | 日本aaaa级毛片在线看 | 亚州精品天堂中文字幕 | 国产精品永久免费 | 久草视频视频在线播放 | 91豆麻精品91久久久久久 | 国产精品观看视频 | 免费日韩 精品中文字幕视频在线 | 五月激情视频 | 亚洲午夜不卡 | 国产尤物在线 | 天天干夜夜干 | 成年人黄色免费看 | 国产探花在线看 | 97视频入口免费观看 | www色,com| 综合久久久久久久久 | 国产精选在线 | 国产精品理论片 | 精品福利在线 | 欧美aⅴ在线观看 | 草久在线 | 日韩欧美视频免费观看 | 中文字幕一区二区三区四区在线视频 | a电影在线观看 | 国内视频在线 | 国产精品久久久久久久久久99 | 五月婷婷亚洲 | 2021国产在线 | 色综合天天综合网国产成人网 | 天天射天天干天天爽 | 99久久久久国产精品免费 | 亚洲免费激情 | 国产亚洲精品久久久久久大师 | 久久精品国产成人精品 | 天天插综合 | 日本在线观看一区二区 | 天天干亚洲 | 中文字幕成人网 | 黄色一区三区 | 亚洲欧美日本一区二区三区 | 国产成人一区二区三区在线观看 | 精品日韩在线一区 | 国产黄色片网站 | 欧美成天堂网地址 | 999久久久久久久久6666 | 国产香蕉97碰碰碰视频在线观看 | 欧美日韩国产精品爽爽 | 国产精品黄| 91免费在线视频 | 韩国三级一区 | 天天爱天天插 | www99久久 | 久久亚洲精品国产亚洲老地址 | 久久久久久免费 | 日日噜噜噜噜夜夜爽亚洲精品 | 草久久久久久 | 日韩黄色免费电影 | 91精品电影 | 日韩免费一区二区在线观看 | 婷婷去俺也去六月色 | 亚洲无吗天堂 | 日日躁你夜夜躁你av蜜 | 美女网站色免费 | 日韩精品在线观看av | 午夜视频一区二区三区 | 亚洲午夜精品福利 | 国产成人黄色在线 | 午夜精品久久久久久久99水蜜桃 | 日韩精品91偷拍在线观看 | 日本久久片| 欧美极品少妇xbxb性爽爽视频 | 日韩一区在线免费观看 | 91成人精品一区在线播放69 | 国产伦理久久精品久久久久_ | 日本三级不卡 | 97成人资源站 | 免费观看全黄做爰大片国产 | 在线观看视频黄 | 九九交易行官网 | 狠狠的操你 | 91激情小视频 | 日韩免费视频观看 | 亚洲一本视频 | 人人搞人人干 | 三级黄色免费 | 国产资源 | 日韩亚洲精品电影 | 韩日电影在线免费看 | 日韩大片在线看 | 日本在线观看一区二区 | 综合久久久久久久久 | 国产黄色视| 国产伦精品一区二区三区免费 | 免费开视频 | 夜夜躁狠狠躁日日躁 | 国产91精品一区二区麻豆网站 | 亚洲黄色av一区 | 国产免费视频在线 | 美女在线国产 | 一区二区三区福利 | 色六月婷婷 | 欧美另类xxx | 国产剧情一区二区在线观看 | 天天鲁天天干天天射 | 一区二区电影网 | 特级黄录像视频 | 国产在线欧美日韩 | 中文字幕你懂的 | 91精品国产高清自在线观看 | 丁香免费视频 | 欧美激情精品久久久久久变态 | 欧洲性视频| 超碰人人91| 亚洲精品高清在线 | www.狠狠色 | 亚洲欧美日韩国产精品一区午夜 | 久久最新 | 精品国产一区二 | 高清久久久久久 | 欧美一区二区在线刺激视频 | 美女黄久久 | 亚洲91网站 | 国产小视频免费在线观看 | 国产一及片 | 久久成人免费 | 国产精品不卡一区 | 色婷婷播放 | 天天色天天草天天射 | 9在线观看免费高清完整 | 国产91全国探花系列在线播放 | 丁香婷婷激情 | av在线a| 亚洲精品在线观看免费 | 69亚洲精品 | 婷婷国产在线 | 日韩视频一区二区在线观看 | 不卡视频在线看 | 久久午夜国产精品 | 天天操天天色天天射 | 麻豆国产露脸在线观看 | 麻豆视频免费播放 | 日韩二区在线观看 | 亚洲一区日韩精品 | 最近中文字幕免费大全 | 超碰在线人人爱 | av中文字幕在线播放 | 欧美91精品久久久久国产性生爱 | 久久成视频 | www.狠狠操| 国产精品美女久久久久久久久久久 | 日韩精品视频在线观看免费 | 久久高清 | 欧美日韩不卡在线视频 | 日韩中文字幕免费视频 | 久久网页 | av资源免费在线观看 | 精品久久久久国产免费第一页 | 久久黄网站 | 久久在线| 99久久精品国产免费看不卡 | 中文字幕一区二区三区四区久久 | 亚洲国产网站 | 欧美一级在线看 | 亚洲a色| 中文一区在线观看 | 97在线免费视频 | 日韩电影在线一区二区 | 欧美电影在线观看 | 亚洲欧美在线观看视频 | 色网站在线看 | 一区二区影视 | 免费亚洲视频 | 欧美精品在线观看免费 | 国内精品视频一区二区三区八戒 | 91av亚洲 | 天堂av在线网站 | 99精品成人 | 丝袜美女在线观看 | 韩日精品在线 | 国产99久久久国产精品免费看 | 国产视频在线观看免费 | 成人免费 在线播放 | 91香蕉视频黄色 | 国产一线二线三线性视频 | 麻豆激情电影 | 中文字幕麻豆 | 国产精品免费在线播放 | 成人免费在线视频观看 | 精品在线视频一区二区三区 | 毛片二区 | 免费在线成人av电影 | 2022中文字幕在线观看 | 99精品国产一区二区三区麻豆 | 国产精品欧美一区二区 | 九九热国产视频 | a天堂最新版中文在线地址 久久99久久精品国产 | 最近中文字幕在线 | 亚洲精品综合在线观看 | av片在线观看免费 | 六月丁香六月婷婷 | 国产精品手机在线播放 | 久久精品亚洲精品国产欧美 | 国产手机在线视频 | 91尤物国产尤物福利在线播放 | 永久av免费在线观看 | 久久免费视频一区 | 亚州av网站 | 99在线视频观看 | 国产精品久久久久影院日本 | 日韩精品一区二区在线观看 | 一区在线观看视频 | 色婷婷综合久久久久中文字幕1 | 久久免费片 | 中文在线免费一区三区 | jizz欧美性9 国产一区高清在线观看 | 亚洲激情在线观看 | 久久男人影院 | 国产原创在线观看 | 久久艹久久 | 日韩精品视频在线观看网址 | 韩国精品在线 | 国产精品久一 | 久久久资源 | 国产免费叼嘿网站免费 | 久久久这里有精品 | 中文字幕亚洲综合久久五月天色无吗'' | 最新黄色av网址 | 97精品国产97久久久久久 | 中文字幕日韩精品有码视频 | 国产中文字幕视频在线观看 | 日韩免费视频 | 久久久久久久久久国产精品 | 国产精品色婷婷视频 | 亚洲日本欧美在线 | 成年人国产在线观看 | 在线之家免费在线观看电影 | 毛片激情永久免费 | 人人爽人人澡人人添人人人人 | 夜夜骑首页 | av中文字幕电影 | 99精品系列 | 久久久免费观看视频 | 亚洲精品久久激情国产片 | 99精品视频免费看 | 色国产在线 | 国产成人精品av在线 | 色偷偷av男人天堂 | 国产精品夜夜夜一区二区三区尤 | 国产成人精品午夜在线播放 | 久久国产精品久久久 | 深爱激情五月综合 | 欧美久久久一区二区三区 | 91人人爽久久涩噜噜噜 | 久久精品视频2 | 亚洲精品美女视频 | 亚洲精品字幕在线 | 99在线播放| 久久综合色8888 | 日韩在线三区 | 日日狠狠 | 波多野结衣在线播放视频 | 亚洲天堂va | 国产精品观看在线亚洲人成网 | 91在线视频免费观看 | 久久这里只有精品首页 | 国产精品视频免费看 | 91看成人| 精品一区91 | 国产精品美 | 蜜臀av.com | 麻豆传媒视频在线 | 又长又大又黑又粗欧美 | 日韩欧美视频在线观看免费 | 婷婷丁香视频 | 在线观看视频亚洲 | 亚洲婷婷在线 | 精品一区在线 | 天天摸天天舔 | 激情综合网五月激情 | 成人中心免费视频 | 亚洲精品视频在线看 | 久久99国产精品免费 | 国产麻豆精品传媒av国产下载 | 亚洲精品1区2区3区 超碰成人网 | 国产精品 中文在线 | av电影免费在线播放 | 欧美在线视频一区二区三区 | 在线免费中文字幕 | 五月婷久 | 9草在线| 久久九九影院 | 久草在线中文视频 | 97在线观看免费观看 | 天天插综合| 中文字幕日韩精品有码视频 | 国内偷拍精品视频 | 久久免费视频2 | 欧美十八 | 在线 国产一区 | 久久久久久久久久久免费av | 日韩精品中文字幕在线不卡尤物 | 国产香蕉97碰碰碰视频在线观看 | 91av资源在线 | 国产精品99久久免费观看 | 国内精品久久久久影院日本资源 | 男女全黄一级一级高潮免费看 | 91精品视屏 | 免费日韩av电影 | 日韩三级免费观看 | 久久人人97超碰国产公开结果 | 久久电影国产免费久久电影 | 国产老太婆免费交性大片 | 夜夜干天天操 | 日韩在线免费看 | 精品一二区 | 成人久久精品视频 | 日韩一二区在线 | 毛片永久免费 | 免费h在线观看 | 国产成人久久精品亚洲 | 日韩在线视频免费观看 | www色网站| 色婷婷成人网 | 免费手机黄色网址 | 亚洲成a人片77777潘金莲 | 久久免费99精品久久久久久 | 丁香婷婷在线观看 | 精品主播网红福利资源观看 | 亚洲毛片在线观看. | 天天草天天干天天射 | 成人毛片一区 | 欧美精品一区二区在线观看 | 青草视频免费观看 | av片子在线观看 | 国产香蕉视频 | 91精品国产综合久久久久久久 | 高清视频一区二区三区 | 亚洲砖区区免费 | 亚洲在线网址 | 亚洲一区 影院 | 国产亚洲成人网 | 国产99久久精品一区二区300 | 天天操综合网站 | 免费看的国产视频网站 | 91在线观看欧美日韩 | 亚洲综合视频在线观看 | 亚洲精品网页 | 久久激情电影 | 欧美亚洲国产精品久久高清浪潮 | 色综合色综合色综合 | 96av麻豆蜜桃一区二区 | 日日夜夜爱| 欧美精品中文字幕亚洲专区 | 免费福利在线播放 | 日韩美女av在线 | 久草免费电影 | 久久这里有精品 |