黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

淺談Linux信號機制

瀏覽:203日期:2024-04-08 13:53:07
目錄一、信號列表1.1、實時信號非實時信號1.2、信號狀態1.3、信號生命周期1.4、信號的執行和注銷二、信號掩碼和信號處理函數的繼承2.1、信號處理函數的繼承2.2、信號掩碼的繼承2.3、sigwait 與多線程2.4、多進程下的信號三、apis3.1、信號發生函數3.2、信號處理函數3.3、信號掩碼函數3.4、信號集合變量3.5、信號屏蔽函數一、信號列表

root@ubuntu:# kill -l

 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1

11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM

16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP

21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ

26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR

31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3

38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8

43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13

48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12

53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7

58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2

63) SIGRTMAX-164) SIGRTMAX

其中最常見的:

Ctrl + C 觸發的是 SIGINT; Ctrl + 觸發的是SIGQUIT; 但是特別說明下 Ctrl + D 并不是觸發信號,而是產生一個 EOF,這也是為什么在 Python 交互模式按下這個組合會退出 Python 的原因。1.1、實時信號非實時信號

如上,kill列舉出所有信號。實時信號與非實時信號又叫做可靠信號與不可靠信號。SIGRTMIN 及其以后的是實時信號,之前的是非實時信號。區別是實時信號支持重復排隊,但是非實時信號不支持。非實時信號在排隊時候會默認只出現一次,意思就是即使多次發送也終將只收到一個。在隊列的取出順序上也有區別,即最先取出的信號一定是實時信號。

PS:

kill、killall 默認發送SIGTERM 信號。 linux下 SIGKILL不能被阻塞、或忽略。 默認情況下 SIGCHLD 不被忽略,編程時候需要注意這個(要么設置 SIG_IGN 或者主動 wait)。 所有未定義處理函數的信號,默認退出進程。 信號被設置block后仍存在于隊列中只是不被處理,如果放開屏蔽將會被處理。 信號可以中斷sleep調用引起睡眠的進程。1.2、信號狀態

信號的”未決“是一種狀態,指的是從信號的產生到信號被處理前的這一段時間;信號的”阻塞“是一個開關動作,指的是阻止信號被處理,但不是阻止信號產生。

例如在sleep前用 sigprocmask 阻塞了退出信號,然后sleep,然后在sleep的過程中產生一個退出信號,但是此時退出信號被阻塞過,(中文的”阻塞”在這里容易被誤解為一種狀態,實際上是一種類似于開關的動作,所以說“被阻塞過”,而不是“被阻塞”)所以處于“未決”狀態,在 sleep后又用sigprocmask關掉退出信號的阻塞開關,因為之前產生的退出信號一直處于未決狀態,當關上阻塞開關后,馬上退出“未決”狀態,得到處理,這一切發生在sigprocmask返回之前。

1.3、信號生命周期

對于一個完整的信號生命周期(從信號發送到相應的處理函數執行完畢)來說,可以分為三個重要的階段,這三個階段由四個重要事件來刻畫:

1.信號誕生;

2. 信號在進程中注冊完畢;

3.信號在進程中的注銷完畢;

4.信號處理函數執行完畢。相鄰兩個事件的時間間隔構成信號生命周期的一個階段。

下面闡述四個事件的實際意義:

信號'誕生'。信號的誕生指的是觸發信號的事件發生(如檢測到硬件異常、定時器超時以及調用信號發送函數kill()或sigqueue()等)。 信號在目標進程中'注冊';進程的task_struct結構中有關于本進程中未決信號的數據成員:

struct sigpending pending;struct sigpending{ struct sigqueue *head, **tail; sigset_t signal;};

信號在進程中注冊指的就是信號值加入到進程的未決信號集中(sigpending結構的第二個成員sigset_t signal),并且信號所攜帶的信息被保留到未決信號信息鏈的某個sigqueue結構中。只要信號在進程的未決信號集中,表明進程已經知道這些信號的存在,但還沒來得及處理,或者該信號被進程阻塞。

1.信號在進程中的注銷。在目標進程執行過程中,會檢測是否有信號等待處理(每次從系統空間返回到用戶空間時都做這樣的檢查)。如果存在未決信號等待處理且該信號沒有被進程阻塞,則在運行相應的信號處理函數前,進程會把信號在未決信號鏈中占有的結構卸掉。是否將信號從進程未決信號集中刪除對于實時與非實時信號是不同的。對于非實時信號來說,由于在未決信號信息鏈中最多只占用一個sigqueue結構,因此該結構被釋放后,應該把信號在進程未決信號集中刪除(信號注銷完畢);而對于實時信號來說,可能在未決信號信息鏈中占用多個sigqueue結構,因此應該針對占用gqueue結構的數目區別對待:如果只占用一個sigqueue結構(進程只收到該信號一次),則應該把信號在進程的未決信號集中刪除(信號注銷完畢)。否則,不在進程的未決信號集中刪除該信號(信號注銷完畢)。進程在執行信號相應處理函數之前,首先要把信號在進程中注銷。

2.信號生命終止。進程注銷信號后,立即執行相應的信號處理函數,執行完畢后,信號的本次發送對進程的影響徹底結束。

1.4、信號的執行和注銷

內核處理一個進程收到的軟中斷信號是在該進程的上下文中,因此,進程必須處于運行狀態。當其由于被信號喚醒或者正常調度重新獲得CPU時,在其從內核空間返回到用戶空間時會檢測是否有信號等待處理。如果存在未決信號等待處理且該信號沒有被進程阻塞,則在運行相應的信號處理函數前,進程會把信號在未決信號鏈中占有的結構卸掉。當所有未被屏蔽的信號都處理完畢后,即可返回用戶空間。對于被屏蔽的信號,當取消屏蔽后,在返回到用戶空間時會再次執行上述檢查處理的一套流程。

處理信號有三種類型:進程接收到信號后退出;進程忽略該信號;進程收到信號后執行用戶設定用系統調用signal的函數。當進程接收到一個它忽略的信號時,進程丟棄該信號,就象沒有收到該信號似的繼續運行。如果進程收到一個要捕捉的信號,那么進程從內核態返回用戶態時執行用戶定義的函數。而且執行用戶定義的函數的方法很巧妙,內核是在用戶棧上創建一個新的層,該層中將返回地址的值設置成用戶定義的處理函數的地址,這樣進程從內核返回彈出棧頂時就返回到用戶定義的函數處,從函數返回再彈出棧頂時,才返回原先進入內核的地方。這樣做的原因是用戶定義的處理函數不能且不允許在內核態下執行(如果用戶定義的函數在內核態下運行的話,用戶就可以獲得任何權限)。

eg:

#include <assert.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <signal.h>#include <unistd.h>void myHandler(int num){ int ret = 0;if (SIGUSR1 == num) {sigset_t set;ret = sigemptyset(&set);assert(!(-1 == ret));ret = sigaddset(&set, SIGINT);assert(!(-1 == ret));ret = sigaddset(&set, SIGRTMIN);assert(!(-1 == ret));ret = sigprocmask(SIG_UNBLOCK, &set, NULL);assert(!(-1 == ret));printf('解除阻塞 recv sig num: %dn', num); } else if (num == SIGINT || num == SIGRTMIN) {printf('recv sig num: %dn', num); } else {printf(' 其他信號recv sig num: %dn', num); }}int main(void){ pid_t pid; int ret = 0; // 設置回調函數 struct sigaction act; act.sa_handler = myHandler; act.sa_flags = SA_SIGINFO; // 注冊非實時信號的處理函數 ret = sigaction(SIGINT, &act, NULL); assert(!(-1 == ret)); // 注冊實時信號的處理函數 ret = sigaction(SIGRTMIN, &act, NULL); assert(!(-1 == ret)); // 注冊用戶自定義信號 ret = sigaction(SIGUSR1, &act, NULL); assert(!(-1 == ret));// 把 SIGINT SIGRTMIN 軍添加到阻塞狀態字中 sigset_t set; ret = sigemptyset(&set); assert(!(-1 == ret)); ret = sigaddset(&set, SIGINT); assert(!(-1 == ret)); ret = sigaddset(&set, SIGRTMIN); assert(!(-1 == ret)); ret = sigprocmask(SIG_BLOCK, &set, NULL); assert(!(-1 == ret));pid = fork(); assert(!(-1 == ret)); if (0 == pid) {union sigval value;value.sival_int = 10;int i = 0;// 發三次不穩定信號for (i = 0; i < 3; i++){ ret = sigqueue(getppid(), SIGINT, value); assert(!(-1 == ret)); printf('發送不可靠信號 okn');}// 發三次穩定信號value.sival_int = 20;for (i = 0; i < 3; i++){ ret = sigqueue(getppid(), SIGRTMIN, value); assert(!(-1 == ret)); printf('發送可靠信號okn');}// 向父進程發送 SIGUSR1 解除阻塞ret = kill(getppid(), SIGUSR1);assert(!(-1 == ret)); } while (1) {sleep(1); } return 0;}二、信號掩碼和信號處理函數的繼承2.1、信號處理函數的繼承

信號處理函數是進程屬性,所以進程里的每個線程的信號處理函數是相同的。通過fork創建的子進程會繼承父進程的信號處理函數。execve 后設置為處理的信號處理函數會被重置為默認函數,設置為忽略的信號保持不變。意思是如果父進程里信號設置處理為SIG_IGN,那么等到子進程被exec了,這個信號的處理還是被忽略,不會重置為默認函數。

eg:

// test.c --> test#include <stdlib.h> typedef void (*sighandler_t)(int);static sighandler_t old_int_handler; static sighandler_t old_handlers[SIGSYS + 1]; void sig_handler(int signo){ printf('receive signo %dn',signo); old_handlers[signo](signo);} int main(int argc, char **argv){ old_handlers[SIGINT] = signal(SIGINT, SIG_IGN); old_handlers[SIGTERM] = signal(SIGTERM, sig_handler); int ret; ret = fork(); if (ret == 0) {//child// 這里execlp將運行 test2 作為子進程。execlp('/tmp/test2', '/tmp/test2',(char*)NULL); }else if (ret > 0) {//parentwhile(1) { sleep(1);} }else{perror('');abort(); } } ================================================test2.c --> test2#include <stdio.h>int main(int argc, char **argv){ while(1) {sleep(1); } return 0;}

結論:test換成test2后,SIGINT的處理方式還是忽略,SIGTERM被重置為默認的方式。

2.2、信號掩碼的繼承

信號掩碼有以下規則:

1.每個線程可以有自己信號掩碼。

2.fork出來的子進程會繼承父進程的信號掩碼,exec后信號掩碼保持不變。如果父進程是多線程,那么子進程只繼承主線程的掩碼。

3.針對進程發送的信號,會被任意的沒有屏蔽該信號的線程接收,注意只有一個線程會隨機收到。linux下如果都可以所有線程都可以接收信號,那么信號將默認發送到主線程,posix系統是隨機發送。

4.fork之后子進程里pending的信號集初始化為空,exec會保持pending信號集。

#include <stdio.h>#include <signal.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h> typedef void (*sighandler_t)(int); static void *thread1(void *arg){ sigset_t set; printf('in thread1n'); sigemptyset(&set); sigaddset(&set, SIGTERM); pthread_sigmask(SIG_BLOCK, &set, NULL); while(1) {sleep(1); }} static void sigset_print(sigset_t *set){ int i; for (i = 1; i <= SIGSYS; i++) {if (sigismember(set, i)) { printf('signal %d is in setn',i);} }} int main(int argc, char **argv){ int ret; sigset_t set; pthread_t pid; pthread_create(&pid, NULL, thread1, NULL); sleep(1); sigemptyset(&set); sigaddset(&set, SIGINT); pthread_sigmask(SIG_BLOCK, &set, NULL); ret = fork(); if (ret == 0) {//childpthread_sigmask(SIG_BLOCK, NULL, &set);sigset_print(&set); while(1) { sleep(1);} }else if (ret > 0) {//parentwhile(1) { sleep(1);} }else{perror('');abort(); } }

結論:只有在主線程里設置的掩碼才被子進程繼承了。這里面的原因在于linux里的fork只是復制了調用fork()的那個線程,因此在子進程里只有父進程的主線程被拷貝了,當然信號掩碼就是父進程的主線程的信號掩碼的復制了。再次驗證證明,如果是在thread1里調用fork,那么子進程的信號掩碼就會是thread1的拷貝了。

2.3、sigwait 與多線程

sigwait函數:sigwait等一個或者多個指定信號發生。

它所做的工作只有兩個:

第一,監聽被阻塞的信號;

第二,如果所監聽的信號產生了,則將其從未決隊列中移出來。sigwait并不改變信號掩碼的阻塞與非阻塞狀態。

在POSIX標準中,當進程收到信號時,如果是多線程的情況,我們是無法確定是哪一個線程處理這個信號。而sigwait是從進程中pending的信號中,取走指定的信號。這樣的話,如果要確保sigwait這個線程收到該信號,那么所有線程含主線程以及這個sigwait線程則必須block住這個信號,因為如果自己不阻塞就沒有未決狀態(阻塞狀態)信號,別的所有線程不阻塞就有可能當信號過來時,被其他的線程處理掉。

PS:

在多線程代碼中,總是使用sigwait或者sigwaitinfo或者sigtimedwait等函數來處理信號。而不是signal或者sigaction等函數。因為在一個線程中調用signal或者sigaction等函數會改變所以線程中的信號處理函數,而不是僅僅改變調用signal/sigaction的那個線程的信號處理函數。

2.4、多進程下的信號

多進程下鍵盤觸發的信號會同時發送到當前進程組的所有進程。如果一個程序在執行時 fork 了多個子進程,那么按鍵觸發的信號將會被這個程序的所有進程收到。

但是與多線程不一樣,多進程下的信號掩碼和信號處理函數是獨立的。每個進程都可以選擇處理或者不處理,也可以設置自己的信號掩碼。

#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <signal.h>int main(int argc, char **argv){ pid_t pid = fork(); signal(SIGCHLD, SIG_IGN); if (pid < 0)printf('error forkn'); else if (pid == 0) {signal(SIGINT, SIG_IGN); // 忽略 SIGINT,這樣 ctrl+c 后子進程能活下來; 不設置的話,收到信號將退出printf('child gid = %ldn', getpgid(getpid()));do{ sleep(1);} while (1); } else {printf('parent gid = %ldn', getpgid(getpid()));do{ sleep(1);} while (1); } return 0;}

淺談Linux信號機制

如上圖,可以看到,收到SIGINT 后父進程退出,子進程因為設置了忽略 SIGINT 所以子進程沒有受到影響。

三、apis3.1、信號發生函數

1.kill(pid_t pid, int signum);

2.int sigqueue(pid_t pid, int sig, const union sigval value);

3.pthread_kill(pthread_t tid, int signum);

4.raise(int signum);// 發送信號到自己

5.void alarm(void);

6.void abort(void);

7.int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);

PS:

sigqueue()比kill()傳遞了更多的附加信息,但sigqueue()只能向一個進程發送信號,而不能發送信號給一個進程組。如果signo=0,將會執行錯誤檢查,但實際上不發送任何信號,0值信號可用于檢查pid的有效性以及當前進程是否有權限向目標進程發送信號。

3.2、信號處理函數

1.signal(int signum, void (*handler)(int signum))

2.sigaction(int signum, struct sigaction* newact, sigaction* oldact)

sigaction act;act.sa_handler = handler;act.sa_flags = SA_SIGINFO;// 注冊信號的處理函數sigaction(SIGINT, act, NULL);3.3、信號掩碼函數

1.sigprocmask(int how, struct sigaction* set,struct sigaction* oldset)

2.pthread_sigmask(int how, struct sigaction* set,struct sigaction* oldset)

sigprocmask用于設置進程的信號掩碼,pthread_sigmask用于設置線程的信號掩碼,二者參數相同。第一個參數有SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK。

3.4、信號集合變量

sigset_t set

sigemptyset(&set) //清空阻塞信號集合變量

sigfillset(&set)  //添加所有的信號到阻塞集合變量里

sigaddset(&set,SIGINT) //添加單一信號到阻塞信號集合變量

sigdelset(&set,SIGINT) //從阻塞信號集合變量中刪除單一信號

sigismember(&set,int signum) //測試信號signum是否包含在信號集合set中,如果包含返回1,不包含返回0,出錯返回-1。錯誤代碼也只有一個EINVAL,表示signum不是有效的信號代碼。

3.5、信號屏蔽函數

1.int sigpending(sigset_t *set); // 返回阻塞的信號集

2.int sigsuspend(const sigset_t *mask);

sigsuspend表示臨時將信號屏蔽字設為mask,并掛起進程直到有信號產生(非屏蔽信號才能喚醒或終止進程),如果信號處理函數返回,那么siguspend將恢復之前的信號屏蔽字(temporarily)

假設sisuspend阻塞進程時產生了信號A,且A不是mask內的屏蔽信號,那么A的信號處理函數有兩種情形,

一:直接終止進程,此時進程都不存在了,那么sigsuspend當然無須返回了(不存在進程了sigsuspend也不存在了,函數棧嘛);

二:如果信號A的處理函數返回,那么信號屏蔽字恢復到sigsuspend之前的(sigsuspend調用時將信號屏蔽字設為mask,所以要恢復到sigsuspend調用之前的),然后sigsuspend返回-1并將error置為EINTR.

以上就是淺談Linux信號機制的詳細內容,更多關于Linux信號機制的資料請關注好吧啦網其它相關文章!

標簽: Linux系統
相關文章:
主站蜘蛛池模板: 色欲av无码一区二区人妻 | 国产精品99久久久久人中文网介绍 | 久久婷婷国产综合尤物精品 | 欧美激情图片 | 亚洲愉拍99热成人精品 | 日本wwwxxx| 国产免费一区二区三区在线能观看 | 国产裸体美女永久免费无遮挡 | 一级激情片 | 欧美黑人性猛交大片 | 中文字幕第一页在线播放 | 日本大尺度吃奶做爰过程 | 日韩欧美区 | 国内精品久久久久久久影视蜜臀 | 好av在线 | 久久人人爽人人人人爽av | 超碰国产人人 | 极品新婚夜少妇真紧 | av网站在线免费播放 | www日本高清 | 91久久久一线二线三线品牌 | 青草青青视频 | 九九九九热精品免费视频点播观看 | 欧美熟妇色ⅹxxx欧美妇 | 波多野结衣黄色 | 娇小萝被两个黑人用半米长 | 日日干夜 | 黑人操少妇 | 一区二区美女视频 | 性色欲网站人妻丰满中文久久不卡 | 欧美三级中文字幕 | 成人黄色一级片 | 国产一区亚洲二区 | 欧美在线视频观看 | 97无码人妻福利免费公开在线视频 | 北条麻妃一区二区三区中文字幕 | 影音先锋每日av色资源站 | 欧州一区 | 岛国av资源| 日日网站| 久久久男人天堂 | 欧美日韩精品在线视频 | 欧美最新精品videossexohd | 动漫av网站免费观看 | 女裸全身无奶罩内裤内衣内裤 | 日韩三级一区 | 神马久久春色 | 大色综合 | 狠狠色噜噜狠狠狠888米奇视频 | 情侣做性视频在线播放 | 国产精品欧美一区二区三区不卡 | 国产不卡一 | 99在线观看精品视频 | 免费观看三级毛片 | 国产毛片毛片毛片毛片毛片毛片 | 国产精品va在线观看无码 | 亚洲在线中文字幕 | 午夜精品av | 欧美精品一区二区久久久 | 免费一级a毛片夜夜看 | 中文字幕乱码一区av久久不卡 | 久久夜色撩人精品国产小说 | 自拍偷在线精品自拍偷无码专区 | 免费午夜视频 | 91av看片| 围产精品久久久久久久 | 亚洲图片在线视频 | 无码熟妇人妻av | 国产精品自在欧美一区 | 成人国内精品久久久久影院vr | 日本精品入口免费视频 | 熟妇人妻中文字幕 | ass亚洲肉体欣赏pics | 国产农村老太xxxxhdxx | 亚洲欧美另类在线视频 | av人与动物| 26uuu国产| 风间由美一区二区 | 亚洲欧洲一二三区 | 热99视频 | 文中字幕一区二区三区视频播放 | 国产精品久久久久久久久鸭 | 国产欧美三区 | 亚洲最大福利视频网 | 亚洲av毛片成人精品 | 欧美中文字幕 | 激情综合五月丁香亚洲 | 国产精品久久久精品 | 欧美在线免费观看 | 这里只有精品在线观看 | 波多野结衣久久 | 久久久久日韩精品久久久男男 | 欧美第一页在线观看 | 亚洲黄色在线 | 九九热在线视频免费观看 | 九色视频网址 | 在线观看人成视频免费 | 日韩人妻无码一区二区三区综合部 | 日韩高清影视 | 国产一区二区三区久久久 | 91精品播放 | 久久久久久综合 | 国产一区二区三区成人欧美日韩在线观看 | 一线二线三线天堂 | 国产99精品 | 老头糟蹋新婚少妇系列小说 | 把jiji进美女的屁屁里视频 | 香蕉成人在线视频 | 喷水一区二区 | 亚洲自偷自偷图片 | 黄色日批| 日韩片在线 | 免费黄色在线播放 | 中文字幕视频一区二区 | 日韩一区二区精品葵司在线 | 精品女同一区二区三区 | 99精品视频免费版的特色功能 | 6699嫩草久久久精品影院 | 国产中文区二幕区2021 | 久久视频在线观看 | 丰满少妇高潮惨叫久久久一 | 3d动漫精品啪啪一区二区 | 成人在线亚洲 | 激情综合网五月婷婷 | 天天噜日日噜狠狠噜免费 | 麻豆视频黄色 | 欧美在线看片 | 在线观看黄色大片 | 日韩三区在线观看 | 国产情侣作爱视频免费观看 | 午夜影吧| 亚洲精品久久久久中文字幕欢迎你 | 小优视频污 | 综合久久五月天 | 日韩欧美一区二区在线观看视频 | 国产人妖在线视频 | 亚洲 国产 另类 精品 专区 | 色拍拍欧美视频在线看 | 男女性动态激烈动全过程 | 91成人福利视频 | 一级淫片免费看 | 欧美乱大交做爰xxxⅹ性3 | 亚洲无在线观看 | 欧美在线观看成人 | 国产女人高潮视频 | 四虎影成人精品a片 | 秋霞99| 亚洲天堂中文字幕在线观看 | 免费在线观看黄色 | 男女日批免费视频 | 极品无码av国模在线观看 | 麻豆av毛片| 精品国产乱码久久久久久影片 | 91中文字幕在线播放 | 韩日av免费 | 一边摸一边做爽的视频17国产 | 国产麻豆一区二区三区精品 | 麻豆最新网址 | 国产精品大尺度 | 国产欧美wwwxj在线观看 | 亚洲日韩欧洲乱码av夜夜摸 | 久久精品日产第一区二区三区在哪里 | 中文字幕亚洲乱码熟女一区二区 | 国产精品欧美久久久久一区二区 | 欧美视频在线观看视频 | 欧美视频网站www色 精品无码久久久久久久动漫 | 国产日产久久欧美清爽 | 伊人热热 | 男女激情视频免费观看刺激 | 黄色av免费在线看 | 午夜大片在线观看 | 亚洲乱码视频在线观看 | 亚洲地区天堂网 | 免费午夜爽爽爽www视频十八禁 | 狠狠色狠狠色合久久伊人 | 国产精品免费一区二区三区四区 | 台湾三级毛片 | 欧美不在线 | 午夜精品久久久久久久99热黄桃 | 日本美女黄色 | 日韩黄网站 | 一边吃奶一边做爰爽到爆视频 | 视频丨9l丨白浆 | 日韩 高清 无码 人妻 | 伊人激情av一区二区三区 | 成人在线影片 | 亚洲高清揄拍自拍午夜婷婷 | 色哟哟视频| 狠狠干性视频 | 色妺妺av爽爽影院 | 免费看黄网站在线 | 一国产一级淫片a免费播放口 | 午夜无码区在线观看 | 欧美日韩精品亚洲精品 | 国产男女无遮挡猛进猛出 | 精品国产第一区二区三区的特点 | 国产婷婷色一区二区三区四区 | 亚洲成av人片天堂网老年人 | 日本丰满大乳hd | 欧美a在线播放 | 女学生处破外女出血av喊痛 | 国产午夜在线 | 夫妻性生活a级片 | 国产精品久久久午夜夜伦鲁鲁 | 国产精品成人国产乱 | 亚洲女同ⅹxx女同tv | 国产激情精品 | 玖玖999 | 香蕉一级视频 | 日本男人天堂网 | 比利时xxxx性hd极品 | 成人片黄网站色大片免费观看 | jizz教师| 91免费黄| 久久中文精品视频 | 国产精品99久久久久久久vr | 高潮又爽又无遮挡又免费 | 伊人久久av| 99成人免费视频 | 91午夜精品亚洲一区二区三区 | 黄视频网站在线 | 长篇乱肉合集乱500小说日本 | 老司机精品视频一区二区 | 香蕉人人精品 | 无码人妻一区二区三区av | 国产在线久| 欧美裸体网站 | 亚洲人成人毛片无遮挡 | 污污视频在线免费看 | 亚洲精品在线免费观看视频 | 久久99成人免费 | aⅴ亚洲 日韩 色 图网站 播放 | baoyu131成人免费视频 | 成人在线免费网址 | 欧美另类天堂 | 亚洲色图欧美日韩 | 激情综合五月 | 公么大龟弄得我好舒服秀婷视频 | 免费无遮挡无码永久在线观看视频 | 3d啪啪动漫精品少妇 | 无毛av | 国产一国产二国产三 | 色小说香蕉| 色香欲天天影视综合网 | 国产精品网友自拍 | 亚洲欧美综合 | 在线观看麻豆 | 四虎国产精品一区二区 | 国产精品高潮呻吟久久av郑州 | 国产在线麻豆精品观看 | 91美女在线观看 | 粉嫩av一区二区 | 西野翔中文久久精品国产 | 中文字幕资源在线 | 你懂的网址在线观看 | 成年女人免费视频播放体验区 | 涩涩鲁亚洲精品一区二区 | 亚洲国产果冻传媒av在线观看 | 一个色在线 | 欧美日韩精品综合 | 天天躁日日躁狠狠躁av麻豆男男 | 亚一区 | 久久人成 | 少妇又色又紧又爽又高潮 | 一级全黄少妇免费录像片 | 久久五月天综合 | 久久久亚洲国产精品麻豆综合天堂 | 黑巨茎大战欧美白妞 | 97在线免费观看视频 | 免费午夜爽爽爽www视频十八禁 | 亚洲乱亚洲乱妇91p丰满 | 欧美色图网址 | 欧美精品一区二区视频 | 国产99在线 | 欧美 | 四虎永久网址 | 少妇做爰免费视频网站色黄 | 久久国产精| 大动漫美女禁视频 | 88国产精品欧美一区二区三区 | 手机在线不卡av | 久久合合 | 国产精品美女一区二区三区四区 | 一卡二卡三卡四卡在线 | 久草在线观看资源 | 成年人免费在线观看网站 | 亚洲国产精品激情在线观看 | 久久国产精品久久久久久 | 中国老妇荡对白正在播放 | 欧美一级片在线视频 | 国产精品内射后入合集 | 对白脏话肉麻粗话av | 欧美黄网在线观看 | 搞逼综合网 | 九九天堂 | 成年女性特黄午夜视频免费看 | 国产成人a亚洲精v品无码 | 日韩在线视频精品 | 国产精品视频全国免费观看 | 插插网站 | 成人免费在线观看av | 中国少妇毛片 | 精品国产va久久久久久久冰 | 国产自产区 | 国产精品网站在线观看免费传媒 | 黑人性较视频免费视频 | 一区二区三区精品免费视频 | 国产精品久久久免费观看 | 成人欧美一区二区三区1314 | 秋霞一区二区 | 国产又粗又猛又爽视频上高潮69 | 熟女毛多熟妇人妻在线视频 | 夜夜高潮夜夜爽夜夜爱爱一区 | 国产主播一区二区 | 亚洲日韩国产av无码无码精品 | 久久国产色av| 爱的色放3 | 成人拍拍 | 欧美一级三级在线观看 | 搞av.com| 欧美高清性xxxxhdvideosex | 久久久.www | 日韩国产三级 | 日韩理论片在线观看 | 婷婷色小说 | 亚洲乱码中文字幕久久孕妇黑人 | 美女黄18以下禁止观看 | 美女极度色诱视频国产 | 国产精品毛片无码 | 门国产乱子视频观看 | 成人免费av网址 | av在线你懂的 | 久久久久久a亚洲欧洲aⅴ96 | 黄视频免费在线观看 | 国产又黄又爽又刺激的免费网址 | a国产一区二区免费入口 | 色视频www在线播放国产成人 | 真实国产老熟女无套中出 | 成人免费看类便视频 | 国产精品国产三级国产aⅴ入口 | 久久三| 18禁无遮挡羞羞污污污污网站 | 好男人社区www在线观看 | 国产中文区4幕区2021 | 一色屋精品视频在线观看 | 狠狠色噜噜狠狠狠合久 | 国产三级国产精品国产专区50 | 黄色av资源 | 伊人久久中文 | 亚洲精品毛片一区二区三区 | 亚洲乱码国产一区三区 | 色悠悠在线视频 | 亚洲中文字幕精品久久 | 成人免费无码大片a毛片抽搐色欲 | 亚洲乱淫| 中文字幕乱人伦高清视频 | 三区中文字幕 | 亚洲国产精品成人va在线观看 | 超碰97人人人人人蜜桃 | 日韩精品99久久久久久 | 国产伦精品一区二区三区在线 | 日本欧美一区二区三区在线播放 | 青青草成人在线观看 | 亚洲最大看欧美片网站 | 亚洲精品一区av在线播放 | 国产山村乱淫老妇av色播 | 国产精品黄色裸体片 | 一色屋精品久久久久久久久久 | 国产成人精品免费视频大全 | 国产在线视频www色 日韩精品av一区二区三区 | 91资源在线播放 | 国产精品亚洲а∨无码播放麻豆 | 国产又大又黄又猛 | 国产精品美女久久久久 | 怡红院av一区二区三区 | 天天做天天爽 | 自拍第1页| 香蕉视频久久久 | 欧美老熟妇乱xxxxx | 九九热在线视频观看这里只有精品 | 午夜xxxx | 日本韩国欧美在线 | 亚洲国产精品一区二区久久 | 欧美综合精品 | 久久aⅴ国产欧美74aaa | 久久久久久久综合 | 国产夫妻性爱视频 | 影音先锋啪啪 | 91啦丨九色丨国产人 | 国产精品天天av精麻传媒 | 国产乱女淫av麻豆国产 | 亚洲国产精品自产在线播放 | 亚洲一区二区三区无码中文字幕 | 十八禁毛片 | 天天综合天天 | 日韩一级二级视频 | 一乃葵在线 | 蜜桃日本免费看mv免费版 | 美女极度色诱图片www视频 | 亚洲精品不卡无码福利在线观看 | 国产免国产免费 | 亚洲热妇无码av在线播放 | 国产亚洲精品久久久闺蜜 | 中文字幕久热精品视频在线 | 黄视频网站在线看 | 欧美 日韩 国产 在线观看 | 国产口爆吞精在线视频2020版 | 国产偷国产偷亚洲精品孕妇 | 国产女爽123视频.cno | 成人在线手机版视频 | 中文字幕精品亚洲无线码二区 | 国产91久久久 | 狠狠躁日日躁 | 亚洲精品国产精品自产a区红杏吧 | 亚洲视频在线观看网站 | 中文字幕一区二区三区四区视频 | 精品无码av一区二区三区不卡 | 日韩精品91亚洲二区在线观看 | 国产99视频精品免视看9 | 内射毛片内射国产夫妻 | 国产寡妇xxxxxxxx性开放 | 日本免费高清视频 | 大学生精油按摩做爰hd | 欧美性做爰毛片 | 男女猛烈激情xx00免费视频 | 黄色a一级视频 | 黑人插少妇| 亚洲最大黄色网址 | 中文字幕在线无码一区二区三区 | 欧美不卡在线视频 | 日韩精品人成在线播放 | 国产夫绿帽单男3p精品视频 | 免费黄网在线观看 | 日本亚洲色大成网站www久久 | 欧美偷拍一区二区 | 亚洲精品一区二区冲田杏梨 | 伊人成色综合网 | 国产精品久久久久久亚洲毛片 | 91精品国产综合久久婷婷香 | 日韩免费大片 | 国产午夜精品久久久久久 | 日本乱偷互换人妻中文字幕 | 九一成人网 | 永久免费网站看黄yyy45视频 | 成人在线一区二区三区 | 麻豆黄色一级片 | 日本伊人色 | 伊人影院久久 | 精品国产系列 | 欧美三级在线播放 | 1024亚洲 | 免费无码又爽又刺激高潮软件 | 日本三级网站在线观看 | 亚洲一区二区三区四区五区xx | 日韩经典中文字幕 | 日本aⅴ片 | 一区二区三区偷拍 | 婷婷在线免费视频 | √新版天堂资源在线资源 | 国产激情综合五月久久 | 蜜桃av噜噜一区二区三区小说 | 波多野结衣在线精品视频 | www内射国产在线观看 | 国产黄色片在线观看 | 亚洲精品一区二区三区中文字幕 | 欧洲色区 | 亚洲中文字幕无码一区在线 | 国产成人精品无码免费看夜聊软件 | 亚洲色图导航 | 欧美在线xxxx | 久久这里只有精品6 | 成人做爰66片免费看网站 | 成人免费在线视频观看 | 免费看黄色一级大片 | 亚洲iv一区二区三区 | 狠狠干快播 | 国产精品视频免费看人鲁 | 天干天干天啪啪夜爽爽av小说 | 嫩草精品福利视频在线观看 | 欧美成人黄色小说 | 天天玩天天干天天操 | www91色com| 91桃色国产在线播放 | 成人亚洲国产精品一区不卡 | 在线免费观看黄视频 | 91在线精品秘密一区二区 | 91九色丨porny丨交换 | 久久久久久久久久久国产精品 | 亚洲一线在线观看 | 户外勾搭av片 | 99精品国产一区二区三区麻豆 | 开心五月激情综合婷婷 | 蜜乳av 懂色av 粉嫩av | 麻豆短视频在线观看 | 嫩草福利视频精品一区二区三区 | 国产性xxxxx| 日本裸体精油4按摩做爰 | 无码人妻精品一区二区三区不卡 | 色婷婷精品视频 | 亚洲第一影视 | 久久99精品九九九久久婷婷 | 女女百合高h喷汁呻吟视频 女女百合国产免费网站 | 在线中文字幕一区 | 国产高潮视频在线观看 | 久热国产vs视频在线观看 | 国产高清不卡免费视频 | 国产精品www在线观看 | 人妻中出受孕 中文字幕在线 | 国产偷伦视频 | 日韩中文网| 国产精品久久久久9999小说 | 99国产精品免费播放 | 精品日本一区二区三区免费 | 国产麻豆精品精东影业av网站 | 中文字幕一区二区三区四区 | 国产精品伦一区二区在线 | 日本熟hd| 国内精品卡一卡二卡三 | 我的公把我弄高潮了视频 | 狠狠色网 | 欧美成人福利 | 九九九免费视频 | 97久久偷偷做嫩草影院免费看 | 日韩视频不卡 | 99热只有这里有精品 | 欧美成人一区二免费视频小说 | 免费的黄色网 | 亚洲成人基地 | 日本肥妇毛片在线xxxxx | 成av人片在线观看www | 男女啪啪免费体验区 | 日韩一区二区在线观看视频 | 熟女视频一区二区在线观看 | 欧美肉欲k8播放毛片欧美 | 亚洲欧美中文日韩在线v日本 | 久久国产热精品波多野结衣av | 日批视频免费在线观看 | 9色91| 国产剧情av麻豆香蕉精品 | 52avaⅴ我爱haose免费视频 | 天天夜夜爽 | 男男野外做爰全过程69 | 精品久久久久久无码国产 | 日韩免费视频 | 亚洲日本不卡 | 久久99这里只有精品 | 一本色道久久综合亚洲精品图片 | 波多野结衣免费在线视频 | 一区二区网 | 日韩操操 | 四虎影视在线播免费观看 | 激情综合五月 | 国产传媒精品 | 91亚洲视频在线 | 精品国产一区二区三区久久 | 丰满肉嫩西川结衣av | 97久久人人超碰国产精品 | 国产网站免费 | 黄色软件网站入口 | 久久精品国产99国产精品亚洲 | 海角社区在线视频播放观看 | 色丁香久久 | 大胸美女被吃奶爽死视频 | 亚一区二区三区 | 免费在线观看黄色网址 | 久草视频在线看 | 日韩午夜高清 | 亚洲综合成人在线 | xxxeexxx性国产| 中文字幕高清免费日韩视频在线 | 日韩欧美啪啪 | 美女100%无挡 | 香蕉视频色 | 亚洲不卡中文字幕无码 | 校园春色综合网 | 欧美成人性生交大片免费看 | 天堂网av手机版 | 日本一区视频在线观看 | 中文字幕日韩精品有码视频 | 亚洲日产精品一二三区 | 夜夜揉揉日日人人 | 亚洲永久无码7777kkk | 日韩精品视频观看 | 麻豆视频成人 | 91精品视频在线 | 日本大乳高潮视频在线观看 | 女人精69xxxⅹxx视频 | 成人小视频免费在线观看 | 黑人巨大av | 蜜乳av国精产品一二三产区 | 日本免费一区二区三区视频观看 | 天天爱天天射 | 国产精品第 | 四虎免费看黄 | 精品欧美一区二区在线观看 | 亚洲18色成人网站www | 波多野吉衣久久 | 日韩国产成人 | 久久最新视频 | 成人精品天堂一区二区三区 | 中文字幕一区在线观看 | 成av人在线观看 | 久久精品国产一区二区三区不卡 | 日产一区日产2区 | 久久国产一级 | 97超视频在线观看 | 老司机午夜影院 | 国产精品区一区二区三 | 黄色毛片大全 | 中文字幕一区二区三区在线视频 | 亚洲综合色丁香婷婷六月图片 | 免费三片在线观看网站v888 | 精品国产亚洲一区 | 在线国精产品 | 天天操bb| aaaaa一级片|