久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網運營的一線實戰(zhàn)洞察。

Linux fork函數詳解:返回值、COW寫時復制與僵尸進程排查

Linux fork函數詳解:返回值、COW寫時復制與僵尸進程排查 第一次看到fork這個函數我盯著那句“調用一次返回兩次”琢磨了挺久——一個函數怎么可能有兩次返回后來在內核源碼里把kernel_clone到copy_process這條路走了一遍才算真正把這件事想通。它難懂不是因為概念有多玄乎而是因為它一腳踩在用戶態(tài) API 和內核調度器的交界處你在 C 代碼里看到的只是一行函數調用背后卻是整個進程地址空間的復制、頁表的重新登記、調度實體的插入。Linux 的 fork 函數幾乎是所有多進程程序的起點從 shell 執(zhí)行命令、Nginx 拉起 worker、到你自己寫的批量任務分發(fā)腳本底層都是同一套東西。這篇文章我想寫給兩類人一類是剛學完操作系統課本、知道“fork 會復制進程”但一寫代碼就蒙的同學另一類是在項目里被僵尸進程、緩沖區(qū)重復輸出、子進程不受控這些問題咬過、想把這套機制徹底捋順的開發(fā)者。我會從內核實現路徑、返回值語義、代碼實操、參數取舍一路講到排查實錄代碼都能直接跑坑也都標出來。1. fork 的本質一次調用為何有兩次返回1.1 從用戶態(tài)看它只是三個整數之一從調用者角度看fork的接口簡單到幾乎沒有任何可配置項——沒有參數沒有任何 flag只返回一個pid_t。這個返回值分三種情況必須先記牢因為后面 90% 的 bug 都源于這里判斷錯了返回值出現在哪個進程含義 0父進程這個值是剛創(chuàng)建出來的子進程 PID 0子進程說明“我就是那個新進程”沒有別的信息 -1父進程創(chuàng)建失敗原因看errno有一點很容易被忽略子進程拿到的 0 不是“子進程的 PID 是 0”而是一個標記位。子進程想知道自己的 PID 得調getpid()想知道爹是誰得調getppid()。我見過不少人寫成if (pid 0) { /* 子進程 */ }邏輯反了還不報錯程序在多核機器上跑出來的結果飄忽不定排查半天才發(fā)現是分支寫反。#include stdio.h #include unistd.h #include sys/types.h int main(void) { pid_t pid fork(); if (pid 0) { perror(fork); return 1; } else if (pid 0) { printf(child : pid%d ppid%d\n, getpid(), getppid()); } else { printf(parent: pid%d child%d\n, getpid(), pid); } return 0; }編譯就用gcc -Wall -O0 fork_demo.c -o fork_demo加-Wall是習慣編譯器對fork相關的返回值未檢查會給出提示能擋掉一批低級錯誤。1.2 內核里那條路從系統調用到copy_process用戶態(tài)的一次fork()最終會落到內核的sys_forkx86-64 上走__x64_sys_fork再進到kernel_clone。這個名字在不同內核版本里變過老版本叫_do_fork5.x 之后統一成kernel_clone。真正干重活的是copy_process它按順序做了這么幾件事dup_task_struct復制一份task_struct和內核棧此時父子進程的描述符已經存在但內容還很“空”。一系列權限與配額檢查RLIMIT_NPROC限制、系統級線程數上限、用戶進程數上限任何一項超了就直接返回錯誤。sched_fork給新任務初始化調度實體把它掛到調度器上但此時還沒真正運行。copy_files、copy_fs、copy_sighand這幾項大多是增加引用計數而不是深拷貝。打開的文件表、信號處理函數表、工作目錄這些父子共享同一份內核對象。copy_mm這是最重的一步復制內存描述符、遍歷所有 VMA、復制頁表并把父子雙方的頁表項統統改成只讀。alloc_pid分配一個新的 PID。wake_up_new_task把子進程放進運行隊列等調度器挑中它。父進程在kernel_clone返回處拿到子進程 PID子進程不是“返回”到這個位置而是被調度到時從ret_from_fork這條棧幀直接跳回用戶態(tài)返回值寄存器被填成 0。所以“一次調用兩次返回”這個說法其實有點誤導——它不是同一個函數返了兩遍而是兩個獨立的執(zhí)行流各自從內核態(tài)穿越回用戶態(tài)只是它們穿越前在同一段內核代碼里待過。1.3 為什么不做全量拷貝COW 的取舍邏輯如果fork真的把父進程幾百 MB 內存整塊復制一遍那創(chuàng)建一個進程的開銷會大到沒法用。早期的確是這個思路fork后緊跟execve的場景浪費極其嚴重——復制了一大堆馬上要被覆蓋的內存。寫時復制Copy-On-Write簡稱 COW就是為了解決這個浪費copy_mm復制頁表時父子進程的頁表項指向同一批物理頁只是把這些頁的權限位從可寫改成只讀同時在task_struct里把頁標記成 COW 頁。真正的復制推遲到有人寫的那一刻。任意一方寫入觸發(fā)缺頁異常內核發(fā)現這是個 COW 頁才分配新物理頁、把原內容拷過去、改回可寫然后重新執(zhí)行那條指令。這個設計的精妙之處在于只讀的父子進程幾乎零成本只有真正被修改過的頁才付出復制代價。但 COW 不是沒有成本。fork的耗時和進程當前占用的虛擬內存成正比因為頁表本身要復制。粗算一下x86-64 上普通頁是 4KB一個占 1GB 內存的進程大約有 26 萬個頁表項每個 PTE 8 字節(jié)光頁表數據就是 2MB 左右再加上遍歷 VMA 的時間。所以你會發(fā)現一個現象——空進程fork微秒級就完了幾百 MB 的服務進程fork一次可能要好幾個毫秒。這個結論直接影響了后面的選型判斷。注意COW 讓父子共享物理頁但邏輯上是兩個獨立的地址空間。子進程里的malloc返回值在父進程里沒有任何意義別指望用這個地址跨進程傳數據那需要共享內存或者管道。2. 執(zhí)行流、競爭與繼承那些課本上不講清楚的事2.1 父子誰先跑答案是“不知道”fork返回之后父進程和子進程誰先被 CPU 執(zhí)行完全由調度器決定沒有任何順序保證。在多核機器上兩個進程大概率是真并行在單核上時間片怎么分也看調度策略。這意味著任何依賴“父進程先執(zhí)行完再輪到子進程”的代碼都是錯的。我踩過的第一個坑就出在這里一個父進程里 fork 之后立刻往共享的文件描述符寫數據子進程也寫結果兩次實驗跑出來的內容順序完全不一樣。當時以為是文件系統的問題其實是執(zhí)行順序不確定。正確的處理方式是顯式同步——用waitpid等子進程結束用管道通信用信號量互斥而不是靠“大概會先跑我”。#include stdio.h #include unistd.h #include sys/wait.h int main(void) { pid_t pid fork(); if (pid 0) { printf(child working\n); _exit(0); } int status 0; waitpid(pid, status, 0); printf(child exited, status%d\n, WEXITSTATUS(status)); return 0; }子進程退出用_exit而不是exit這是個細節(jié)但很重要。exit會執(zhí)行atexit注冊的函數、刷新 stdio 緩沖區(qū)而這些緩沖區(qū)是從父進程繼承來的如果父進程 fork 前有沒刷新的內容子進程exit時又刷一遍輸出就重復了。_exit直接走系統調用跳過所有這些用戶態(tài)清理干凈利落。2.2 文件描述符繼承共享的不只是“編號”fork之后子進程會得到父進程所有打開文件描述符的副本但這里有個特別容易誤解的地方復制的是描述符不是文件對象。父子雙方各自的 fd 編號可能不同但它們指向同一個struct file而struct file里存著文件偏移量。后果很直觀父進程讀了 100 字節(jié)子進程接著讀會從第 101 字節(jié)開始而不是從頭讀。寫文件同理兩邊交替寫會互相覆蓋偏移。我在做一個日志切分的小工具時就被這個咬過父子都往同一個日志文件追加結果日志里出現了大片空洞——因為兩邊都在用lseek挪同一個偏移量。想避免這個問題常規(guī)做法是父子需要獨立讀寫位置時子進程 fork 之后自己重新open一次文件或者應用層用O_APPEND打開讓每次寫都由內核原子地定位到文件末尾或者干脆別讓多個進程寫同一個文件改成各自寫各自的后續(xù)再合并。除了文件描述符子進程還會繼承當前工作目錄、信號處理方式SIG_IGN和自定義處理函數都繼承但未處理的信號會重置為默認、umask、環(huán)境變量、資源限制。這些在寫守護進程的時候會集中爆發(fā)問題。2.3 多線程進程里 fork 的隱藏雷區(qū)這是我認為最需要單獨拎出來說的一條。fork只會復制調用它的那個線程其他線程在子進程里全都不存在。但問題來了那些線程持有的互斥鎖、條件變量、讀寫鎖狀態(tài)是被原樣復制過去的。如果 fork 的瞬間某個鎖正被另一個線程持有那么在子進程里這把鎖永遠處于“被鎖住”的狀態(tài)而持有者已經不存在了任何試圖加鎖的代碼都會永久阻塞。規(guī)避方式有三條路按推薦程度排fork 完立刻 execve。這是最安全的姿勢execve會把整個用戶態(tài)地址空間換掉鎖的狀態(tài)也一并消失。絕大多數“fork 后要干事”的場景其實都該走這條路。fork 之前保證沒有其他線程在跑比如在程序啟動早期就把需要 fork 的邏輯做完。用pthread_atfork注冊 prepare/parent/child 三個鉤子在 fork 前后手動加解鎖。這套機制能解決問題但很容易寫成死鎖尤其是涉及多把鎖的時候加鎖順序稍不注意就翻車。提示如果你的程序用了線程池同時又有 fork 子進程的需求請優(yōu)先考慮把子進程部分改成獨立進程或者獨立的服務不要在同一進程里混用?;煊脦淼恼{試成本遠高于拆開的改造成本。3. 動手實操從最小 Demo 到可用的進程管理3.1 循環(huán) fork 的 2 的 n 次方陷阱先看一段看起來人畜無害的代碼for (int i 0; i 3; i) { fork(); printf(pid%d, i%d\n, getpid(), i); }很多人以為這會產生 3 個子進程加 1 個父進程。實際結果是 8 個進程。原因在于fork之后父進程繼續(xù)循環(huán)子進程也從 fork 的下一行繼續(xù)執(zhí)行于是它也進入下一輪循環(huán)并且再次 fork。每一輪都把當前進程數翻倍3 輪就是 23 8。這個行為本身沒錯是很多人對“子進程從哪開始執(zhí)行”的理解有偏差。子進程不是從main重頭開始而是從fork返回點繼續(xù)。如果確實需要創(chuàng)建 N 個并列的工作進程比如預派生模型正確寫法是在子進程里立刻跳出循環(huán)#define WORKERS 4 for (int i 0; i WORKERS; i) { pid_t pid fork(); if (pid 0) { perror(fork); break; } if (pid 0) { worker_loop(i); /* 子進程干活不再進入下一輪 */ _exit(0); } } /* 父進程在這里統一 wait */關鍵就是if (pid 0)分支里干完活直接_exit絕不落回循環(huán)體。這個模式叫預派生pre-forkNginx 的 worker 模型、老式 Apache 的 prefork 都是這個思路。好處是每個 worker 獨立壞處是 worker 數在啟動時就固定了得配合平滑重啟來調整。3.2 用 fork execve 寫一個迷你 shell想真正理解 fork最好的練習是寫一個能跑命令的 shell。它的核心邏輯只有四步讀一行、切參數、fork、子進程 exec。#include stdio.h #include stdlib.h #include string.h #include unistd.h #include sys/wait.h #define MAXLINE 1024 int main(void) { char line[MAXLINE]; while (fgets(line, sizeof(line), stdin) ! NULL) { line[strcspn(line, \n)] \0; if (line[0] \0) continue; if (strcmp(line, exit) 0) break; char *argv[64]; int argc 0; char *tok strtok(line, ); while (tok ! NULL argc 63) { argv[argc] tok; tok strtok(NULL, ); } argv[argc] NULL; pid_t pid fork(); if (pid 0) { perror(fork); continue; } if (pid 0) { execvp(argv[0], argv); perror(execvp); /* 只有 exec 失敗才會走到這里 */ _exit(127); } int status 0; waitpid(pid, status, 0); if (WIFEXITED(status)) { printf([exit %d]\n, WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { printf([killed by signal %d]\n, WTERMSIG(status)); } } return 0; }幾個值得說的點。execvp會自己去PATH里找可執(zhí)行文件所以直接敲ls就能跑。execvp成功的話永遠不會返回返回值只在失敗時有用失敗后必須_exit(127)用 127 是 shell 界的慣例表示“命令沒找到”。waitpid拿到的status是個打包值不能直接當退出碼用得用WIFEXITED、WEXITSTATUS、WIFSIGNALED這些宏去拆。我第一次寫的時候直接printf(%d, status)輸出 256 讓我困惑了很久——其實真實退出碼是 1因為退出碼存在高 8 位。這個 shell 還很粗糙不支持管道、重定向、后臺任務但骨架已經對了。想支持管道就需要在 fork 之前先pipe()然后兩個子進程分別把dup2把讀端寫端接到標準輸入輸出上這是個很好的練手項目。3.3 并行任務分發(fā)怎么定并發(fā)數再給一個更貼近實際工作的例子——把一批耗時任務拆給多個子進程并行跑。這個模式在數據預處理、批量轉碼、壓測腳本里特別常見。#include stdio.h #include unistd.h #include sys/wait.h #define JOBS 4 static void do_work(int id) { sleep(1); /* 模擬耗時計算 */ printf(job %d done by pid %d\n, id, getpid()); } int main(void) { pid_t pids[JOBS]; for (int i 0; i JOBS; i) { pid_t pid fork(); if (pid 0) { perror(fork); pids[i] -1; continue; } if (pid 0) { do_work(i); _exit(0); } pids[i] pid; } for (int i 0; i JOBS; i) { if (pids[i] 0) { int status 0; waitpid(pids[i], status, 0); printf(child %d reaped, status%d\n, pids[i], WEXITSTATUS(status)); } } return 0; }并發(fā)數怎么定我的經驗是別超過 CPU 邏輯核數。純計算型任務進程數等于核數時吞吐最高再多只會增加上下文切換和內存壓力??梢杂胹ysconf(_SC_NPROCESSORS_ONLN)拿到當前可用核數再乘一個系數I/O 密集型任務等待磁盤、網絡系數取 2 到 4CPU 密集型任務系數取 1每個子進程內存占用大比如幾百 MB還得反過來壓低數量防止觸發(fā) OOM。另外要注意waitpid的回收順序。上面這段代碼是按創(chuàng)建順序回收的如果第 0 個任務特別慢后面三個早就跑完了也得等著。想做到“誰先完誰先回收”用waitpid(-1, status, 0)循環(huán)回收任意子進程或者干脆用SIGCHLD信號處理。4. 資源、參數與選型什么時候該用 fork什么時候不該4.1 fork 失敗的兩種典型 errnofork返回 -1 時errno最常見的兩個值是EAGAIN和ENOMEM含義完全不同排查方向也不一樣。EAGAIN表示“資源暫時不夠”通常是進程數配額打滿了。要檢查幾個地方RLIMIT_NPROC用ulimit -u看、系統級kernel.pid_max、kernel.threads-max還有 cgroup 里的pids.max。在容器環(huán)境里跑最容易撞的是 cgroup 的 pids 限制從宿主機上看一切正常容器里怎么都 fork 不出來。我遇到過的一次就是容器 pids 上限設得太小業(yè)務里但凡有個 fork 都失敗日志里只留一行“Resource temporarily unavailable”查了半天才定位到配額。ENOMEM則是內存不夠。注意這不一定是物理內存耗盡也可能是因為 COW 機制下內核需要為新進程分配task_struct和內核棧同時在復制頁表時需要申請內存。內存緊張時一個本身不大的進程 fork 也可能失敗。這時候該看的是dmesg里有沒有 OOM 相關記錄以及/proc/meminfo的CommitLimit和Committed_AS。堆棧上還有一個坑內核棧默認不大歷史上是 8KB某些配置下更小fork本身不占用戶棧但如果你的代碼在fork前遞歸很深子進程復制的是整個地址空間的映射雖然 COW 不會立刻復制物理頁但虛擬地址空間的布局是完全一致的棧溢出風險同樣被繼承過去。4.2 fork、vfork、clone、posix_spawn 怎么選這四個東西經常被放在一起比較但它們的定位差別很大接口地址空間典型用途注意事項fork完全復制COW通用進程創(chuàng)建大內存進程下耗時隨內存增長vfork與父進程共享父進程阻塞fork 后立刻 exec 的老場景子進程不能 return只能_exit或 execclone可精細控制共享哪些資源實現線程、命名空間隔離參數復雜直接用的場景不多posix_spawn內部實現可能用 vfork/clone單純想“起個程序”接口受限不適合 fork 后跑自定義邏輯選型上的判斷其實很簡單如果你 fork 之后馬上就要 execve那就用posix_spawn它在 glibc 里會走clone(CLONE_VM | CLONE_VFORK)省掉整個頁表復制的開銷在大內存進程里差距非常明顯。我在一個占內存接近 1GB 的服務里把fork exec換成posix_spawn創(chuàng)建子進程的耗時從毫秒級降到了幾十微秒級效果立竿見影。如果 fork 之后子進程要跑一段自己的 C 邏輯改環(huán)境、設權限、接著算那還是老老實實fork。vfork不要碰它的約束太苛刻稍微寫錯一點就是未定義行為而且現代 glibc 的fork已經在很多場景下優(yōu)化得夠好了。如果你需要的是“共享地址空間的并發(fā)”那你其實想要的是線程應該用pthread_create而不是clone。clone是給需要做命名空間隔離、實現容器運行時這類底層工具準備的。4.3 內存開銷的實測感受我自己做過一個粗略的對比測試在同一臺機器上讓一個進程分別占用 10MB、100MB、500MB 匿名內存然后各 fork 1000 次記錄平均耗時。數量級上的結論是10MB 時 fork 大約在幾十微秒100MB 時漲到一兩百微秒500MB 時到了毫秒級。這個增長主要來自頁表復制和 VMA 遍歷跟寫入多少數據無關。這個結論有很實際的指導意義如果你的服務常駐內存很大就不要在熱路徑上頻繁 fork。要么改成常駐的 worker 池啟動時一次性 fork 好之后靠任務隊列分發(fā)要么改用線程池要么在 fork 前盡量減少不必要的內存映射。反之如果進程很小比如一個命令行小工具fork 的開銷基本可以忽略不用過度設計。5. 常見問題與排查實錄5.1 僵尸進程不是“沒死透”是“沒人收尸”子進程結束后內核不會立刻把它的task_struct全部釋放因為父進程可能還需要讀取退出狀態(tài)。這個狀態(tài)叫僵尸態(tài)Z。只要父進程調用了wait或waitpid狀態(tài)被讀取資源才會真正回收。如果父進程一直不回收僵尸會越積越多。單個僵尸占的內存不多主要是一個task_struct加內核棧但 PID 是有限的數量堆上去之后新的 fork 就會返回EAGAIN。用ps aux | grep Z能一眼看到或者ps -eo stat,pid,ppid,comm | awk $1 ~ /^Z/。處理方式有幾種按場景選同步回收waitpid(pid, status, 0)適合明確知道要等哪個子進程的場合。異步回收注冊SIGCHLD處理函數在處理函數里循環(huán)waitpid(-1, NULL, WNOHANG)直到返回 0 或 -1。注意SIGCHLD可能合并所以必須用循環(huán) WNOHANG不能只 wait 一次。主動放棄如果確實不關心子進程結果可以顯式忽略signal(SIGCHLD, SIG_IGN)在某些系統上這會讓子進程退出時自動被回收不用父進程操心。但要注意這會影響到所有子進程其他需要waitpid的地方就拿不到狀態(tài)了。#include signal.h #include sys/wait.h #include unistd.h static void on_sigchld(int sig) { (void)sig; int saved_errno errno; while (waitpid(-1, NULL, WNOHANG) 0) { /* 循環(huán)回收所有已退出的子進程 */ } errno saved_errno; } int main(void) { struct sigaction sa; sa.sa_handler on_sigchld; sigemptyset(sa.sa_mask); sa.sa_flags SA_RESTART | SA_NOCLDSTOP; sigaction(SIGCHLD, sa, NULL); /* ... 業(yè)務邏輯 ... */ return 0; }信號處理函數里保存和恢復errno是個細節(jié)因為信號隨時可能打斷正在進行的系統調用處理函數里如果改了errno回到被打斷的地方邏輯就亂了。SA_RESTART的作用是讓被信號打斷的系統調用自動重啟減少EINTR的處理負擔。另一個容易被忽略的角色是孤兒進程。父進程先于子進程退出子進程就被“過繼”給initPID 1或者某些系統里的 subreaper由它負責回收。這本身不是問題但如果你的程序里子進程依賴父進程做清理工作父進程一死子進程就成了沒人管的野進程。做守護進程或者熱重啟的時候要特別小心這一點。5.2 緩沖區(qū)重復輸出一個經典到不能再經典的坑這段代碼把輸出重定向到文件你會看到兩行hello#include stdio.h #include unistd.h int main(void) { printf(hello); /* 沒有換行 */ fork(); return 0; }原因在于 stdio 的緩沖策略。輸出到終端時是行緩沖遇到\n才刷輸出到文件時是全緩沖緩沖區(qū)滿了才刷。printf(hello)沒有換行內容就躺在用戶態(tài)緩沖區(qū)里沒發(fā)出去。fork復制地址空間時這份緩沖區(qū)內容原樣復制到了子進程。父子進程各自正常退出exit觸發(fā)刷新于是同一個 hello 被寫了兩次。這個坑的隱蔽之處在于同樣的代碼在終端上跑是正常的一重定向到日志文件就出問題。所以排查時如果發(fā)現“日志里怎么有重復行”先看看是不是在fork前有沒刷新的輸出。規(guī)避手段很成熟fork之前調用fflush(NULL)把所有的輸出緩沖刷干凈或者子進程一律用_exit而不是exit或者在每個printf后面老實加\n。這三條里我推薦后兩條組合使用_exit應該成為肌肉記憶。5.3 常見問題速查表把上面這些以及一些零散的問題匯總一下方便對著查現象最可能的原因排查/解決fork返回 -1EAGAIN進程數達到RLIMIT_NPROC或 cgroup pids 上限ulimit -u查容器 pids.maxfork返回 -1ENOMEM內核內存不足無法分配task_struct或頁表看dmesg、/proc/meminfo子進程跑完不退出ps顯示Z父進程未回收加waitpid或SIGCHLD處理日志出現重復行fork 前 stdio 緩沖區(qū)未刷新fork 前fflush(NULL)子進程用_exit循環(huán)里 fork 出 2^n 個進程子進程落回循環(huán)子進程分支結束后立刻_exit父子寫同一文件內容錯亂共享文件偏移量用O_APPEND或各自 open或分文件子進程里加鎖永遠阻塞多線程下 fork鎖被其他線程持有改成 fork 后立即 exec或用pthread_atfork子進程變成孤兒無人清理父進程先退出用 subreaper 或專門的 supervisor子進程繼承了不該有的 fdfd 默認被繼承fork 后關閉無關 fd或用O_CLOEXEC最后一條值得展開說一句。O_CLOEXEC這個標志非常有用打開文件或套接字時帶上它這個 fd 會在 exec 時自動關閉避免子進程意外持有不該持有的連接。在長連接多的服務里如果 fork 出來的子進程繼承了所有 socket一方面浪費 fd另一方面連接關閉的時機變得難以判斷。從代碼層面統一給open、socket、pipe2加CLOEXEC是個好習慣成本幾乎為零。還有一個排查技巧不確定子進程到底繼承了哪些 fd可以在子進程里ls -l /proc/自進程PID/fd一眼看清楚。同理/proc/PID/status里的Threads、VmRSS/proc/PID/task/下的線程列表都是排查這類問題的一手信息。養(yǎng)成看/proc的習慣比裝一堆工具快得多。6. 我在實際項目里攢下的幾條經驗寫到這里分享幾個文檔里不太會提、但確實節(jié)省過時間的做法。第一給每個 fork 出來的子進程起個可識別的名字。Linux 上可以調prctl(PR_SET_NAME, worker-xxx)這樣ps和top里就能看明白哪個進程在干什么而不是一堆同名進程排在那。出問題時省下來的定位時間遠超當初寫這幾行代碼的成本。第二在子進程的入口處打一行帶 PID 的日志并且立刻setpgid或調整會話。這能讓日志里的 PID 和進程樹對應起來尤其是在子進程會再 fork 的場景下沒有這層標記日志會亂成一鍋粥。做后臺任務的時候順手把子進程放到獨立的進程組后面想整組發(fā)信號終止也方便。第三不要吝嗇waitpid的循環(huán)寫法。我見過太多“只 wait 一次”的代碼在子進程密集退出的場景下漏回收慢慢積累成僵尸。統一寫成while (waitpid(-1, st, WNOHANG) 0)配合SA_RESTART這套模板可以直接抄。第四大內存進程優(yōu)先考慮換掉模型。如果發(fā)現每次 fork 都有明顯卡頓先別急著調內核參數問問自己“這個 fork 真的必要嗎”。預派生進程池、線程池、獨立的常駐服務這三種方案在絕大多數場景下都比“按需 fork”更穩(wěn)。fork這個接口看著古老但它承載的語義——地址空間復制、文件描述符繼承、執(zhí)行流分叉——至今沒有被替代。把它的返回值、COW、回收機制這三件事吃透后面再看clone、看容器運行時怎么隔離命名空間、看 shell 怎么執(zhí)行管道都會順很多。我現在寫涉及多進程的代碼開工前會先在紙上畫一遍父子關系標清楚哪個 fd 誰負責關、哪條路誰負責 wait畫完之后 bug 就少了一大半。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲激情网| 国产成人在线观看综合| 桃花色涩综合影院| 91色综| 日日干夜夜操视频h| 91爱欧美| 丝袜美腿丝袜| 制度丝袜99| 国产熟女完整版中字| 国产精品剧情| 国产精品久久久视频| 中文字幕在线播放2中文字幕在线观看2| 国产精品第二页| 一本大道青青| 欧美久久人人网| 综合色播| 久久久久久久久久久精| 不卡av在线中文字幕| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 一级久久性爱视频| 偷拍2020| 日韩av一级黄片| 久久久久久中文| 国产一区二区三区免费视频在性观看 | 欧美最婬乱婬爆婬性视频 | 亚洲男人天堂2019| 色偷偷综合91久久噜噜| 97婷婷色| 国产丝袜美女在线一区| 五月天激情网图片| 欧美91精品国产自产| 欧美日韩中文亚洲v在线综合| 国产污视频麻豆传媒一区二区| 中文字幕99999| 九九性爱网| 国产suv精品一区二六| 亚欧成人综合影院| 日日嗷| 日本色婷婷| 久久这里只有精品9| 亚洲日韩国产欧美综合v| 少妇500双飞99| av线电影| 在线视频一区二区传媒| 九九这里只有精品| 欧美人人AAA| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 久久啊哟| 99热在线播放| 中字乱伦AV| 精品无码欧美三级| 九月伊人中文字幕| 亚洲图片欧美色| 精品中文日韩字幕视频| 美女淫穴| 亚欧中文字幕在线视频| 蜜臀久久99精品久久久老,,| 成人性爱电影网| 日韩亚洲精品一区二区| 精品人妻一区二区三区不卡断| 亚洲国产精品无码AV在线| 精品人妻一区二区蜜桃视频| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 爽爽歪在线视频| 大香蕉一级黄色片久久| 亚洲人妻在线精品| 欧亚性爱视频免费看| PMv在线观看| 国产乱伦性爱区| 99熟女| 精品国产99| 北京美女一区二区| 91熟女丨91老女人| 中国东北熟女老太婆内谢| 欧美日韩操逼嗦吊| laoshunv91| 自拍视频大全亚洲专媒视频/一区二区三区 | 中文字幕精品一区欧美| 91在线视频观看国产| 性欧美另类高清| 九九热精彩视频| 韩日欧亚a级| 国产午夜激片Av毛片不卡| 欧美成va视频网站| com 首页 18岁 禁区 女优 免费 精选 同城 | 特级丰满少妇一级AAAA爱毛片| AV免费在线播放一区| 男人的天堂在线有码| 青青草原av| 一区二区三区精品久久| 91精品国| 欧苏综合色综合| 超碰欧美COM| 秋霞曰韩R级| 操逼无毒无码免费视频| 中国探花熟女| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 肉嘟嘟www视频在线观看高清| 涩爱AV在线| 成人精品在线免费视频| 夜夜狼人妻| 免费一级性爱久久| 久久XX| 黄色性爱网网| 国产三区免费在线观看| 欧美十八禁在线看| 中文字幕二区日韩天堂| 精品网站9999| 五月天我淫我色av| 九色 人妻 大香蕉| 亚洲男人的天堂AV| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 啊啊啊啊啊在线| 四方色播| 亚洲免费精品一区| 婷婷五月色| 亚洲一区二区三区麻豆传媒| 综合网亚洲1| 欧美丝袜91| 天天干人妻| 日韩一级片在线看| 搞中出久久| 亚洲做性| 精品久久久不卡一区二区| 免费一级毛片在线视频观看| 国内伊人久久久久久网站视频| 欧美爆操91| 亚洲成人久久美女| 国产一区二区精品久久99| 91天天综合在线| 五月色综合| A级片日韩欧美国产欧美视频精选观看| 色情亚洲日本成人| 欧美一区二区三区大综合| 蜜乳中文字幕a在线| 国产精品对白自产拍| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 中文字幕AV片| 深田咏美亚洲精品福利社| 97自拍视频在线| 人人扣人人操| 成人网欧美风情| 精品少妇99| 激激五月| 伊人久久青青草| 亚洲蜜乳av| 亚洲精品无码少妇久久| 天天操天天舔| 求求你操操我| 久久久久久九九九九| 先锋影音av先锋一区| 性在久久久久久| 日韩AV电影网站| 欧美色色人| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 操一区| 美女黑人91神马| 国产精品白丝在线播放| 久日91在线| 国产91福利小视频在线观看| 欧美综合97www| 女色综合| 99热免费精品| 思思热久久成人| 人妻AV 中文字幕的| 国产91丝袜 在线播放| 亚洲不卡不卡中文字幕不卡 | 国产精品香蕉| 免费夜夜爱黄色视频毛片| 色诱中文字幕| 99精品欧美一区二区三区桃色| 久超超碰| 午夜AV人气不卡| 天天天天天超碰| 日韩人妻制服丝袜av| 国产视频第2页| 性色生活片久久毛片婬片免费放女人一级毛片| 天天超级碰碰碰| 在线观看黄色电话| 男人的天堂 在线一区| 欧美淫穴| 91亚洲情色| 中日无幕一二三四区| 亚洲无线观看久久| 日韩欧美偷拍美女视频| 国产乱伦亚洲| 乱伦熟女区| 一区二区三区男人的天堂| 色99在线| 人妻偷拍一区二区三区| 黄污污污污| 国产人妻精品一区二区三区秋霞| 日韩乱插| 亚洲Av诱惑| 久久亚洲不卡| 亚洲最新av无码成人精品区| 国产青一二三| 九九色影院| 国产免费黄色一级大片| 啊啊啊 在线| 97久久精品国产| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 欧美熟妇成人一区二区| 999精品乱码| 亚洲毛片久久| 国产精品久久久亚洲一区| 51一区二区三区| 精品二区三四区五电影 | 久久九操在线观看| 97er欧美性| 嗯嗯,好大,好爽,好骚 | 中文字幕在线观看网页| 蜜桃精品一区二区三区ww| 97超碰美国| 欧美爆操91| 天天摸天天插天天日| 日日干日日操五月天伦理视频| 天天综合网在线| 天天插夜夜爽| 伊人九九九| 欧美夜夜草视频| 麻豆国产视频精品观看| 少妇滛荡视频| 白丝在线一区| 伊人久久大香线蕉无码| 2010男人的天堂| 久久国产精品91| 国厂麻豆77q4| 国产400孕妇孕交群| 国产美女销魂在线观看不卡| 色综合婷婷| 好吊色一区| 视频在线97| 精品久久久久久亚洲| 少妇一区二区三区精选| 99这里只有精品国产| 99亚洲精品| 97精品网站| 九九九九九九九九九九九免费国产| 蜜桃精久三区| 欧美亚洲涩涩| 午夜毛片亚洲精品片国产久久久| 懂色AV蜜臀无码精品APP| 久久香蕉超碰97国产精品| 美欧色综合| 亚洲啪啪性视频| 天操天操夜操夜月操月年年操操| 亚乱色| 91l欧美在线| 美女操逼A A| 91亚洲不卡一区| 国语av狠狠色丁香婷婷综合激情| 丰满少妇人妻久久久久久| 伊人操| 久久25| 欧美18老人禁| 青青草日韩免费观看高清在线| 午夜福利精品| 欧美92| 伊人综合色网| 99久久婷婷丁香| m欧洲一级午老| 欧美一级AAAAAAA| 黄片免费看黄片免费看| 精品中文一区二区| 婷婷五月天成人| 日韩丰满熟妇| 刺激精品视频| 亚洲综合五月天| 97在线日韩中文字幕| 鸥美插入视频| 日B操| 岛国人妻少妇av在线观看| 欧美自拍网| 欧美最大综合网| 免费看美国人人爽,人人操| 黄片aaaaa一区| 蜜臀在线网站| 欧美亚洲一区二区久久久婷精品大包诱| www99热| 亚洲天堂 视频你懂的| 性爱AV天堂| 色综合色综合网| 日韩 欧美 另类 人妻| 一二三四区电影| 91 丝袜在线| 婷婷久久大香蕉| 国产亚洲日韩欧| 偷拍导航视频网站| 中亚黄色三级大片| 久久久久久91香蕉国产| 骚货人妻偷情自拍在线视频| 日韩一区二区三区四区五区| 夜夜嗨视频| 爱啪精品一区| 日韩乱码Av| 欧亚免费视频| 亚洲古典另类欧美在线| 亚洲色图尤物视频| 精品人妻一二三| 亚洲另类色综合网站| 综合网久久| 久久超碰久| 九九色综合| 91|九色|国产熟女| 午夜丁香| 丁香婷婷大香蕉| 人人色人人操在线| 一二三区精品视频| 久草尤物| 日本激情免费大片| 久久久九九| 亚洲视频1区| 欧美大片91| 啊啊嗯嗯好爽| 午夜精品久久一区二区| 丝袜喷水在线| 国产精品熟女丝袜一区二区| wwwcaobibi| 太久视频| 色色综合网站| 91啪9色| 色女网日韩| 啪啪91| 日本天天人人狠狠在线日美女 | 97精品97久久| 啊啊啊操死我了| 中文字幕一区二区三区四五区| 久操影视| 78m成人视线| 人妻铁牛TV| а√天堂资源官网在线资源| 亚川综合视频| 99色视频| 精品国产72| 99精品无码| 欧美色网络| w w w.久久精品| av网页一区二区三区| 欧美另类精品xxxx| 九九久久99| 99re99在线视频| 亚洲人在线| 亚洲天天更新| 欧美综合亚洲综合| 亚洲第一精品在线视频| 后入人妻无码| 久久神马影院| 国产精品一区二区校花| 欧美日韩人人精品| 亚洲婷婷丁香在线| 五月丁香六月激情综合| 亚洲精品亚洲人成在线麻豆| 天天爱天天操| 91成人18| 亚州精人品大香蕉| 久久久专区| 狠操91,com| 中文字幕精品一区欧美| 色97干| 精品久久久久久中文字幕视频免费| 人人艹亚洲| 天天淫人人妻日日色| 中文字幕日韩精品久久| 区一二区日韩亚洲乱码av电影| 97久久国产精品女不卡| 色屁屁影院www国产| 高清无码国产亚洲| 妇女性内射冈站HDWWWCOM| 中文字幕 一区二区 亚洲无码| 亚洲日韩电影| 久日综合网| 岛国黄色大片网站| 涩五月婷婷| 欧亚性爱视频免费看| 777AV电影| 五月婷婷激情网| 人妻精品免费一二三区| 精品久久久久黄少妇| 熟女乱伦A| 亚洲激情综合| 综合视频91| 99re在线观看| 五十路六十路素人熟女| 久久国99999| 国产大学生高潮在线播放| 97色碰| 亚洲美腿丝袜香蕉影视欧美成人| 97超碰色屌| 亚洲 欧美 手机在线观看| 亚洲精品97| 欧美黑人168页欧美黑人167| 欧美在线官网| 波多野结衣一级视频| 高清一区AV无码| 综合网欧美在线| www.色婷婷色综合| 日韩不卡在线一区二区| 亚洲天堂欧美| 老鸭窝在线视频播放| 青女在线| 韩日男人的天堂| www.久久爱| 麻花豆传媒剧国产MV出差| 九九碰九九爱97超| 91熟女网| 大香蕉懂9| 久艹伊人精品综合在线| 在线可观看的黄色网址| 2019精品国产无码成人| 欧美18老人禁| 国产视频第二页| 99最新日韩偷拍视频| 传媒免费一区二区三区| 美女毛片999| 亚洲国产综合久久久性感熟妇| 按摩中文字幕| 91 国产丝袜在线放观看| 999久久久九| 一区二区三区 日韩欧美| 亚洲97在线| 欧美日不卡| 26uuu国产| 国产成人网站在线观看| 国产精品网址| 日韩av乱伦| 青操影院| 91人妻做a观看视频| 日韩性爱免费视频在线网站| 亚洲天天精品| 北京美女一区二区| 97亚洲一区| 思思热免费视频观看| 国产福利电影| 精品视频在线观看| 欧美日韩系列| 在线电影亚洲色图| 日本精品久久久久久久| 中文字幕五区| 欧州色图区| 亚洲第一页色| 国产高清MV操逼视频| 国产精品久久久久无码A√| 欧美福利视频啊啊啊啊| 日韩精品字幕| 人妻干天天| 亚洲av综合伊人久久| 亚洲性网| 五月婷婷丁香六月丁香| 精品久久久久久中文字幕三区 | 国产成人网| 另类天堂| 2011国产精品| 精品97精品97| 高树玛利亚无码流出| 国产精品大香蕉| www.av在线观看| 国产精品亚洲免费| 精品久久一区二区三区四区五区| 91麻豆天美国产欧美| 久久9亚洲| 亚洲欧洲国产综合av| 久99视频| 亚洲人妻av| 人人喜人人妻| 青青欧洲黑| 黑人性欧美| 亚洲全色网| 老司机深夜18禁污污网站| 免费精品中文字幕| 五月天综合网| 国产久久久久影院老熟女| 欧美最婬乱婬爆婬牲视频| 黄站在线免费观看| 91在线免费精品视频| 亚洲成人一区二区精品| 中文字幕 人妻不满 在线视频| 思思热在线观看| 99国产精品久久久久久久成人热| 欧美啪啪天堂| 丰满人妻区一区二区三| 日韩丝袜二区| 色好看av| 久久黄人人爽视频| 成人免费毛片| 亚州色交| 日本伦理一区二区| 一区二区无码视频| www.av在线视频| 日本在线不卡123| 超碰视97中文| 午夜啪啪片| 图色综合网| 在线视频资源| 曰韩av中文字幕专区| 超碰在线人妻不卡| 干妹子| 狼狼色丁香久久婷婷综合五月| 久久麻豆一区二区| 九九九九九九亚洲| 麻豆一区在线| 可乐操在线| 国产色综合亚洲色综合吹潮| 超碰精品在线| 国产精品久久久午夜夜伦鲁鲁| 亚洲av噜噜噜噜噜噜| 亚洲成人性爱在线观看| 91在线视频免费中出| 精品免费成人久久| 亚洲第一狼人丝袜美女另类| 日本伦理一区二区| 国产精品扒开腿做爽爽爽视频| 艹比视频国产精品| 国产久久久久影院老熟女| 九九热只有精品| 国产成人免费观看在线视频| 大香蕉欧美伊| 1240青青草一区二区三区视频天爱| 金莲网址| 99只有精品| 大黄片做爱的大的| 日韩美女高潮喷水视频| AV一区观看| 国产传媒美日韩av| 日韩免费高清大片在线| 夜夜操夜夜爽夜夜高潮| 色吧5亚洲| 5252色欧美在线| 麻豆色99999| 激情婷婷五月天| 97欧美日韩综合| 91亚·色| 飘花国产午夜精品不卡| av草草在线电影| 成人av免费观看| 欧美亚洲综合高清在线| 日本一二区免费| 极品综合| 97亚洲综合在线| 超碰亚洲欧美日韩无| 少妇高潮流水av免费| 色吧91| 青娱乐手机日韩在线视频| 免费成人在线熟妇网| 亚洲性爱电影| Sekablack无码一区| 亚洲欧美性生活| av在线不卡一区二区三区| 超碰在线综合97| 久久综合18p| 亚洲av综合色区无码一| 99热这里都是精品| 69精品人人人人| 色香色欲天天综合网天天来吧| 中文字幕一区二区无码成人| 天美一二三在线观看Av| 日韩一999精品| 欧色性第一页| 91动漫操逼视频| 亚洲男人天堂AV| 久久久久久9999| 美女刺激久久国产欧美| 18禁网站在线播放| 中文AV制服乱伦| 成人女人国产| 久操九九九九| 五月丁香六月婷综合成人综合| www.av家庭乱伦| 青青11操操操操操操操操| 人妻-91porn| 国产和美国毛片| 人妻人人操| 麻豆视频国产一区二区| 九九九九九九免费视频| 日韩乱码av| 另类 日韩 熟女| 中文一区二区| 在线啊啊啊啊| 超碰人妻久久| 天天舔九色婷婷| 亚洲色诱惑| 精品人妻中文字幕4399| 男生通女生屁股| 日韩精品操少妇| 精品熟女一区=区三区| 五月天婷精品激情| 操迟操逼在巾线Fre看| 天天干夜夜肏| 成人自拍三级在线观看| 中文字幕国产在线天堂| …亚洲黄色厕厕女女在线播…| 婷婷爽人人婷婷爽视频| 久久久久久久| 精品乱码在线观看| 久久鲁夜| 亚洲黄日韩无码专区| 夜夜操二区| 天天色综合天天操| 黄色一级视| 亚洲午夜福利在线影院| 日韩国产乱子伦App| 欧美亚洲中文字幕| 欧美亚洲自拍另类人妻| 老司机福利社视频在线观看| 超碰天天久久79| 亚洲五区熟女| 欧美色图 人妻| 中文字幕天天操| 欧美日韩性感| 99国产天美| 激情文学网伊人| 99re这里只有精品中心播放| 自拍盗摄一区| 久草婷婷| 久久久久久免费电影| 亚洲丰满很很操| 中国和日本人色哪个不下载能放| 国产欧洲精品亚洲午夜拍精品| 熟女一区二区| 神马久久免费电影观看| 国产白丝网站| 一起草高清无码| a亚洲欧美色欲| 国产亚洲精品农村妇女| 99色| 中文字幕av一区二区三区人妻少妇 | 国产精品suv一区| 国产婷婷一区| 久久精品一区二区三区蜜桃臀| 日本不卡一二区| 人人操人人搞人人草| 久久大香蕉手机高清| 国产白丝在线| 亚洲国产精品99久久久| 天堂蜜桃无码视频一区二区| 国产9熟妇视频网站| 中文字幕av亚洲精品| 久久草在线综合视频| 91撸色网 玖玖网 欧美| 国产99999久久精品| 日韩特级毛片免费观看全集| 免费自拍三级综合| 好吊色一区| 91精片| www.91色综合| 精品熟女呻吟久久91| 日本人人操人人操| 五月天人妻综合| 国产精品自在自拍视频| 天天日天天射天天干| 亚洲天天更新| 久久99久久99久久99人受| 久久精品视频一区三区小泽玛利亚| 神马午夜久久| 久久亚洲精品成人av| 激情图片亚洲色图| 一级性爱视频免费观看 | 91欧美综合在线| 国产Av超碰| 丝袜综合| 久草免费福利在线播放| 四虎免费视频| 九热视频| 国产精品人妻无码久久久互動交流| 亚洲熟妇极品| 夜夜操美女| 国产第11页| 国产精品宅男免费| 一二三区精品视频| 日本裸体久久色噜噜| 国产久久天堂资源| 理论久久婷婷网 8| 99热这里只有精品8| 中文字幕日本久久| 91精品黄在线观看| 日本一级一级一级一级| 六月婷婷综合| 色黄色美女大长腿午夜视频| 久久亚洲一区女同性恋中文字幕| 91中文精品日韩欧美在线 | 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 99蜜月精品久久| 日本天天操| 高清一区AV无码| 91麻豆天美传媒在线| 丁香婷婷激情五月天无毒不卡| 精品一区二区人妖| 亚洲av国产av综合av卡| 久久精品日韩专区免费观看| 九九九九久久久| 国产AV久久野战精品| 超碰97护士| 欧美少妇性乱| 婷婷日韩一区二区三区中文字幕在线| 试看日韩黄片| 久热精品在线| av天天在线| 一二三四视频在线社区中文字幕| 欧美gv在线观看| 98久久超碰| 久久婷婷苹果| 天天干人人乐| 久夜操| 久久国产精品一区二区| 97网站在线观看| 99热线麻豆| 91视频女生| 色婷婷日韩精品一区二区三区| 啊啊啊啊啊啊啊网址在线观看| 青久操| 日韩精品影视| 91痴汉| 九九热re99re6在线精品| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 亚欧美综合网。| 国产精品久久久久久久久久久久久久久久| 亚洲精品天天影视综合网| 亚洲综合网电影91| 国内精品不卡无毒99999| 熟妇高潮一区二区免费视频| 亚洲熟女乱熟乱熟妇综合网二区| 少妇天堂网络| 人人爽夜夜玩视频| 午夜操操操| 绯色一区二区三区不卡少妇| 久久在线观看免费视频| 无码高清国产AV| 亚洲成人免费电影| 久久99国产综合精品女同| 亚洲情色在线| 麻豆色约约| 无码外流操逼视频| 成人三一级一片aaa| 综合色图区| 无码操逼天堂| 超碰午夜| 99精品久久久久久久婷婷蜜桃| 婷婷五月丁香五月| 久久久久密臀视频| 日逼97| 国产高清MV操逼视频| 大香蕉操久久| 精品无码一区二区三区| 操b在线观看| 激情五月天视频| 亚洲色91C| 亚洲av噜噜噜噜噜噜| 色婷婷九月天天综合| 欧美黄色图片| 亚洲另类天堂| 天天躁日日躁AAAXX| 污污污8888| 婷婷五月天激情四射| a天堂视频| 大香蕉99热| 清纯唯美亚洲综合| 91Chinese在线| 99爱爱| 亚洲 日本 国产 综合| 麻豆亚洲Av成人无码一区精品| 国产9熟妇视频网站| 日韩无码a片| 大香蕉综合在线| 欧美一二三级精品在线| 亚州综合电影| 97欧美视频| 熟女丰满人妻一区| 色爱天堂| 操碰97| 天天综合~91| 小日子操bb在线看| 精品国产乱码久久久兰草影视| 国产精品一区二区久久精品| 精品无码一区二区| 久综合国内精品自在自线| 色91综合网| 无码 黑人一区二区三区| 嗯嗯啊啊亚欧精品| 超碰在线欧美性爱激情| 啊啊啊不要好爽日韩无码一区| 国产1024在线播放| 男人精品天堂一区| 国产亚洲精品av一区| 亚洲日韩资源| 91欧美高清| 黄色大片免费在线| 超碰久久草| 亚洲成?V人片在线观看福利| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 日韩欧美亚洲自拍偷拍| 婷婷另类小说| 色爱三区| 亚洲中文字幕熟女| 精吧天堂| 女人妻一区| 91精品电影18| 国产精品在线一区二区| 九九黄色网| 国产综合在线视频网站| 在线观看啊啊啊啊啊| 色九九九| 九九aV| 天天躁日日躁AAAAXXXX国产 | 九九热视频这里只有精品| 色综合网1| 无码外流操逼视频| 亚洲中文sv| 操淫穴亚洲五月丁香 | 久操在97| 国产精品成人蜜臀AV在线| 国产精品国产拍高清AV| 狠狠搞 亚洲91| 亚洲淫乱骚妇AV| 国产精品91一样| 久久 国产精品 一区| 无码高清少妇久久| 夜夜嗨一区二区三区直播内容| 亚州高清色综合| www.狠狠| 天天射网| 另类图片五月| 久久思思热| 亚洲黄色影视| 爱媛媛久久国产福利| 日韩操逼性鲍| 91丨九色丨国产丨人妻在线| 91无码人妻精品一区二区三区蜜桃| 五月婷婷色色| 成人影 天天操 亚洲| 另类TS人妖一区二区三区| 久久久久久久久久久久黄色| 99自拍视频在线观看| 九色精品视频导航1| 91熟女视频网| wwe 天天干.com| 看日韩操逼| 欧亚在线视频| 国产又粗又又黄又猛| 手机看片1025| 秋霞欧美性爰视频| 熟女乱伦二区| 色综合加勒比四四季| 91爱综合| 色在线69堂| 射丝袜大香蕉| 超碰97COm中文| 国产成人91一区二区三区| 五月丁香黄色网| 白天啪啪晚上啪啪视频| 在线观看亚洲专区| 95人妻爽爽人人做人人澡| 色婷婷在线视频| 成人老鸭窝人人在线视频| 99热精品青草在线 | 久热婷婷| 韩日男人的天堂| 果冻传媒A片一二三区| 天天天干977| 成全动漫视频观看免费下载| 四虎国产精品永久地址入口| 色五月婷婷在线| 91色噜噜狠狠| 亚州,欧美在线| 丁香7月婷婷| 国产精品亚洲一级av第二区| 色婷婷丁香五月| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 久久曰曰| 人妻在线大香蕉| 久久久久久久精| 手机看片1024你懂的国产| 96精品久久久久中文字幕| 91 亚欧| 天天爽夜夜爽夜夜爽精| 天天爽爽爽爽| chaopen97久久| 日日操丁香五月天| 97色色婷婷| 欧美玖玖爱免费玖玖| 国产欧美日本亚洲精品| 国产农村一一级特黄毛片| 亚洲中文字幕日产无码久久| 97超碰美女| 婷婷久久久| 97人人色| 国产又操| 999久久芭蕾| 91国产丝袜美女| 性做久久久久久久| 日韩激情视频| 欧美性爱免费短视频| 夜夜操91744565| 亚洲天堂五月天国产| 久久欧洲| 国产精品一区av在线| 91五月天| 国产精品原创巨作?v网站| 精品99999久久久久久| 国产精品不卡高清在线观看| 日韩精品.久久精品.AV女优.天美传媒| 亚洲色婷婷综合久久一区二区三区| 久久肏大逼| julia国产在线 | 怡红院成人av| 精品人妻av在线播放| 2017超碰| 亚洲色五月| 思思热一热婷婷热一热| 日本免费亚洲欧美| 91色婷婷综合久久中文字幕二区| 天天操天天插| 久久久96| 色网在线| www超碰| 日本成a人v网站在线观看| 91久久18禁| 91黑丝露脚| 大香蕉中文网| 综合色播| 国内精品a| 97超碰超欧美。| 激情综合网五月婷婷| 欧美真人抽搐一进一出gif | 9.1小视频| 久悠悠av| 懂色AV蜜臀无码精品APP| 怡春院久久| 欧美国产有色电影| 精品一区二区3区| 狠狠中文字幕| 日韩电影在线观看网址| 大香蕉92| 超碰天天久久79| 久久久一区二区三区四曲免费听| 家庭乱伦国产精品| 97中文字幕九区| 久久同城AV| 高清不卡国产| 亚洲图片欧美在线视频| 男女一进一出视频久久| 天天操熟妇| 日韩国产十八禁| 澳门成人网站久国产日韩| 日本色色的视频| 大香蕉久| a片久久久久久久久久久久 | 色穴精品| 99精品网站| 99热导航| 人妻另类| 久久久久久九九九九九九| 色狠狠综合| 欧美很很操视频| 熟女色综合久久| 国产成人拍国产亚洲精品| 久久一区二区三区四区五区| 九一国产精品| 操淫穴亚洲五月丁香 | 日韩熟女操逼| 亚洲欧美在线观看无码| 精品国产av一区二区三区四区入口| 97色碰| 无码不卡亚洲成?人片| 黄页网站成人免费| 91美女视频直播| 日韩精品一区,二区 九九...老司机| 无码99| 久久嫩草国产成人一区| 色色99| 国产十八禁视频| 久久久性少妇| 久久香蕉国产线看观看亚洲女人| 99热婷婷一区二区三| 99re免费| 国产精品成久久久久午夜午夜| 26uuu成人影片| 天天操夜夜嗨| 六月丁香啪啪| 97玖玖超碰| 久九9精品| 大奶的诱惑| 无码av永久免费专区网站| 狠狠激情综合狠狠操中文字幕| 中文字幕 码精品视频网站| 日韩99神马视频播放片在线播放| 男插女青青影院| 亚洲 中文 欧美 日韩 在线| 国产久久天堂资源| 国产美女销魂在线观看不卡| 亚洲成人福利电影免费| 九九热免费国产视频婷婷伊人五月| 老师充足的奶水小说| 一区二区亚州激情久婷婷欧美| 91啪啪| 久久一级无码精品毛片6| 丝袜AV一二三区| 超碰在97| 欧洲特黄毛片免费看欧洲毛片| 色哟哟511老熟女| 蜜桃精品一区二区三区ww| 日韩av电影网站| 国产久久成人| 欧美.亚洲.另类.丝袜.制服.诱惑| 日日干夜夜骑| A一区片| 欧美天天拍| 欧洲视频在线| 人妻系列无码专区中文有码| 色综合中文字幕不卡| 国产精品禁久久久精品| 无码精品久久久天天影视| 色婷婷在线视频精品导航| 99999久久精| 亚洲最大AV网| 91美女国产在线| 日韩人妻一区二区| 精品视频123区小说区| 欧美加勒比| 黄色网址在线免费观看| 综合网欧| 26uuu国产亚洲综合| ,国产乱人伦精品一区二区三区| 91性情| 乱人伦 国语对白:视频直接看| 可乐操亚洲蜜911| 能看的AV| 男女一进一出视频久久| 人人天天欧洲| 亚洲久久久久| 97高清啪啪| 熟妇xxxxx性春色| 最新av在线| 久久免费精品视频免一| 超碰午夜| 韩国一级做A片免费的| 丰满熟女人妻一区二区三五十一路| 999岛国大片| 四虎影视欧美| 亚洲天堂自拍| 18禁中文字幕| 日韩精品影视| 国产在线76页| 国产三级在线现体验区| 国产精品午夜福利视频| 青娱乐日韩无码| 亚洲国产综合图区中文字幕| 久久久99久9| 一本久道在线综合视频| 狠久久| 欧美黄色图片| 日韩性爱小视频在线观看| 国产熟女一区二区| 黄片直播三级黄片两女一男| 午夜精品久久99蜜桃的功能章节| 日本三级小说中文字幕| 国产午夜无码片在线观看影视| 91天美免费| 青青欧洲黑| 99精品网| 老熟女91| 国产深喉| 亚洲码和欧洲精品激情系列| 人妻少妇av在线观看| 蜜臀99久久| 欲香欲色综合天天伊人| 亚洲日韩青青草色月| 婷婷久久五月天| 丰满高潮18xxxx| 国产精品精品系列在线观看| 人妻91少妇| 日本性一区| 97超碰逼| 97色色色综合网站| 日韩一级二级| 久久精品福利影院| 躁躁躁日日躁2020| 台湾佬中文娱乐网久久久久久久久久com | 强奸a片网| 伦伦成年午夜免费视频| 欧洲性爱无码区| 国产高清成人免费视频| 亚91网| 超碰97 线线 在现| 欧美日韩亚洲天堂| 色欲久久99精品久久| 午夜精品久久久99热蜜桃的功能特点| 2019AV天堂| 国产精品久久久999| 日韩超碰精品综合| 少妇天堂网络| 超碰97最新人妻| 男生女生啊啊啊啊| 亚洲色图欧美色图制服诱惑| 久久欧美性爱视频| 91成人在线免费视频| 奇米狠999| 日韩精品永久在线观看| 看日韩操逼| 国产高潮AA片免费看| 色色五月婷| 激情综合五月婷婷| 亚洲AV免费在线观看| 国产91精品久久久久久久网曝门| 蜜桃臀 后入 一区 二区 三区 在线| 日本日日色视频| 91精品又粗又猛又爽| 歐美一級亂黃99在綫精品| 啊好爽受不了无码| 中文字幕精品久久久久人妻红杏ⅰ| 97超碰色中文字幕| 综合网少妇| 国产福利电影| 视频在线观看免费一区二区三区| 欧洲中文字幕| 精品亚洲国产成人AV制服丝袜| 九九碰九九爱97超| 999综合网| 五月婷亚洲精品天堂| 亚春色色| 亚洲素人综合| 少妇久久久久| 亚欧日韩成人| 91亚洲不卡一区| 精品国产自在在线99| 亚洲AV色图一区| 国产成人拍国产亚洲精品| 乱伦av国产| 精品无码一区二区三区| 先锋影音av先锋一区| 国产版a级片直播在线| 国产有码一区| 欧美—性—交—色| 亚洲AV无码翔田千里网站| 一起草AV| 中文在线视频| 久久青青草原免费视频| 天天欧美欧美亚洲网| 久久宗合亚洲| 亚洲一区日韩精品| 国产SV一线| 9色国产精品一区粉嫩| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 日本精品一区二区三| 东京热,男人的天堂| 日韩精品碰碰| 99精品热| 国产精品久久久吖| 色情综合网| 久久久熟女一区| 欧美精品99久久久**| 97频视在线| 精品中文字幕第一页| 日本女人操逼| 亚洲诱惑天堂| 欧美午夜一区二区三区| 午夜精品人妻二区三区| 免费无码国产精品v片在线观看| 久久久久无码| 亚洲欧美国产中文视频| 欧美综合第一|