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

ARTICLE DETAIL

資訊詳情

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

Linux應(yīng)用層開發(fā)全景:從系統(tǒng)調(diào)用到文件與進(jìn)程核心機(jī)制

Linux應(yīng)用層開發(fā)全景:從系統(tǒng)調(diào)用到文件與進(jìn)程核心機(jī)制 寫這篇筆記的時候我剛幫一個轉(zhuǎn)行的學(xué)弟理完進(jìn)程間通信的脈絡(luò)。他跟我說命令我能背一寫代碼就不知道程序在系統(tǒng)里是什么狀態(tài)。這話我太熟了。做面試官這幾年十個候選人里至少有四個卡在同一個地方——不是不會用Linux而是腦子里缺一張“程序在Linux里怎么活”的地圖。Linux應(yīng)用層開發(fā)本質(zhì)就是搞清楚這張地圖然后在這張地圖上寫代碼。這個系列筆記我不打算按命令分類講而是按開發(fā)者實(shí)際需要的知識體系來組織。第1篇先把地基打牢理一遍應(yīng)用層開發(fā)的全景從零搭好環(huán)境再把文件和進(jìn)程這兩條主線過一遍。適合準(zhǔn)備從“會操作Linux”走向“會開發(fā)Linux”的朋友也適合知識點(diǎn)散、想重新串體系的人。讀這篇之前假設(shè)你已經(jīng)能敲一些常用命令比如cd、ls、cat至少不陌生。如果連這些都沒怎么用過也沒關(guān)系第2章會帶你把開發(fā)環(huán)境一步一步搭起來。真正重要的不是你記住了多少命令而是建立“程序在系統(tǒng)里如何存在”的模型。命令只是模型的入口。1. 先搞清楚應(yīng)用層開發(fā)到底在開發(fā)什么1.1 用戶態(tài)與內(nèi)核態(tài)為什么這么分先說一個很多教程一筆帶過、但非常重要的問題為什么Linux要分用戶態(tài)和內(nèi)核態(tài)。簡單說內(nèi)核是系統(tǒng)里權(quán)限最高的代碼管理著CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)這些硬件資源直接在內(nèi)核態(tài)干活。而你寫的應(yīng)用層程序跑在用戶態(tài)權(quán)限受限。這兩個狀態(tài)之間不是物理隔離而是由CPU的特權(quán)級機(jī)制保證的內(nèi)核態(tài)能執(zhí)行特權(quán)指令用戶態(tài)不能想碰硬件和核心數(shù)據(jù)必須通過系統(tǒng)調(diào)用這個唯一的窗口。我習(xí)慣把這個結(jié)構(gòu)比作物業(yè)中心。內(nèi)核是物業(yè)住戶是你的程序系統(tǒng)調(diào)用就是物業(yè)的服務(wù)窗口。房子里的東西你隨便用但想換水表、改承重墻、動公共區(qū)域的管線必須找物業(yè)辦手續(xù)。對應(yīng)到代碼里open、read、write、fork、mmap這些名字全都是系統(tǒng)調(diào)用也就是“找物業(yè)辦事”的接口。為什么這么設(shè)計(jì)最直接的好處是安全和穩(wěn)定。用戶態(tài)程序?qū)憼€了最多自己段錯誤崩潰內(nèi)核還能繼續(xù)跑要是所有程序都能直接操作硬件一個野指針就可能把整個系統(tǒng)干翻。這也是應(yīng)用層開發(fā)和內(nèi)核開發(fā)最本質(zhì)的區(qū)別你不需要管中斷、頁表、調(diào)度器這些底層細(xì)節(jié)但你必須知道自己的每一次資源操作背后都會陷入內(nèi)核一次并且要學(xué)會處理系統(tǒng)調(diào)用返回的錯誤。判斷一個程序干了哪些系統(tǒng)調(diào)用有個特別實(shí)用的工具叫strace后面排查問題會經(jīng)常用到。你可以對著一個最簡單的ls命令跑strace -f ls能看到打開目錄、讀取文件信息、寫標(biāo)準(zhǔn)輸出的一串調(diào)用。第一次看到的時候會有一種“原來操作系統(tǒng)是這樣被調(diào)用”的通透感。1.2 應(yīng)用層選什么語言跟內(nèi)核層有什么區(qū)別應(yīng)用層開發(fā)的語言選擇非常寬C、C、Python、Go、Rust、Java都有各自的位置。我的建議是這個階段別糾結(jié)“哪個語言最強(qiáng)”而是把C當(dāng)作理解系統(tǒng)和面試的基底同時按方向選一門主用語言。C和glibc是一對你寫的fopen、printf底層經(jīng)過glibc封裝后最終還是會走系統(tǒng)調(diào)用。學(xué)C不是為了寫業(yè)務(wù)是為了理解“系統(tǒng)調(diào)用長什么樣”文件描述符是什么、read為什么返回0、errno是怎么回事。這些概念用Python寫也行但Python把細(xì)節(jié)藏得太深不利于你建立模型。Python適合快速原型和自動化腳本寫爬蟲、寫工具、做數(shù)據(jù)處理非常爽。Go是這幾年服務(wù)端開發(fā)的主流部署簡單、并發(fā)模型好用很多云原生組件都是Go寫的。嵌入式Linux項(xiàng)目則幾乎繞不開C還要加上交叉編譯工具鏈也就是在x86電腦上編譯出ARM板子能跑的程序。應(yīng)用層和內(nèi)核層的工作內(nèi)容差異也很明顯。寫內(nèi)核模塊、寫設(shè)備驅(qū)動屬于內(nèi)核態(tài)開發(fā)調(diào)試要用printk、kprobe這些工具一個空指針能把系統(tǒng)搞崩。寫應(yīng)用層程序崩潰就崩了系統(tǒng)不會掛但你要面對的是各種系統(tǒng)調(diào)用錯誤、并發(fā)問題、資源泄漏。這個對比經(jīng)常出現(xiàn)在“l(fā)inux面試題”里建議你自己總結(jié)一張對照表面試的時候比背概念管用。1.3 這個系列的學(xué)習(xí)地圖我打算按開發(fā)者的視角來組織整個系列而不是按“Linux命令手冊”來組織。命令是操作入口程序是邏輯系統(tǒng)調(diào)用是能力邊界。三者的關(guān)系理清了很多知識會自動串起來。后面的筆記大致規(guī)劃如下第1篇也就是本篇做三件事——搭環(huán)境、打通文件和進(jìn)程兩條主線。第2篇講I/O模型重點(diǎn)是把select、poll、epoll講透這是高并發(fā)服務(wù)的核心。第3篇把進(jìn)程間通信展開管道、信號、共享內(nèi)存、消息隊(duì)列、Socket、DBus都會過一遍。第4篇進(jìn)入多線程鎖、條件變量、線程池。再往后是網(wǎng)絡(luò)編程、性能調(diào)試。第1篇在整個系列里承擔(dān)的角色相當(dāng)于畫圖紙。文件是“一切皆文件”的基礎(chǔ)進(jìn)程是所有程序的載體這兩條主線不建立起來后面講I/O多路復(fù)用、講IPC你都會覺得像懸在空中。所以別急著往后跳先把這兩塊吃透。2. 從零搭一個能練手的Linux開發(fā)環(huán)境2.1 選發(fā)行版和鏡像別太上頭搜“l(fā)inux鏡像安裝”的時候你會發(fā)現(xiàn)發(fā)行版多到讓人選擇困難。我的建議是別在這上面花太多時間。入門階段選Debian系最穩(wěn)Ubuntu和Debian的軟件包最全社區(qū)文檔多遇到問題隨便一搜就有答案。如果你以后明確走運(yùn)維或服務(wù)器方向可以裝Rocky Linux或AlmaLinux它們和Red Hat系同源生產(chǎn)環(huán)境里的出場率更高。嵌入式方向則不用在PC上裝什么特別的發(fā)行版反而要熟悉交叉編譯工具鏈這個放到后面專門講。學(xué)習(xí)方法上推薦用虛擬機(jī)別一上來就折騰雙系統(tǒng)。虛擬機(jī)的優(yōu)勢是可以隨時做快照玩壞了恢復(fù)一下就行完全不用重裝。VirtualBox或者VMware Workstation Player都行裝一個Debian 12或Ubuntu LTS版本分配2個CPU、2GB內(nèi)存、20GB磁盤對于學(xué)習(xí)應(yīng)用層開發(fā)完全夠用。下載鏡像就去官網(wǎng)或者國內(nèi)高校鏡像站選ISO文件然后正常引導(dǎo)安裝整個過程和裝Windows差不多唯一要留意的是分區(qū)那一步選“整個磁盤”就行初學(xué)者沒必要手工分區(qū)。如果你電腦本身已經(jīng)裝了Linux或者你的目標(biāo)就是把Linux當(dāng)主力系統(tǒng)那更省事直接用就行。學(xué)習(xí)用的環(huán)境干凈可控最重要沒必要追求“用最新的滾動發(fā)行版”這種折騰感。2.2 換國內(nèi)源別把時間浪費(fèi)在apt update上新裝好的Debian第一件事就是換軟件源不然apt update慢到你懷疑人生。為什么慢因?yàn)槟J(rèn)的軟件源服務(wù)器在境外網(wǎng)絡(luò)鏈路長尤其是拉取軟件包列表時特別明顯。換成國內(nèi)高校鏡像站之后速度從幾分鐘降到幾秒體感極其明顯。Debian 12及之后的版本軟件源配置放在/etc/apt/sources.list.d/debian.sources文件里格式是deb822。用sed直接替換域名是個干凈利落的方式sudo sed -i s|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list.d/debian.sources sudo apt update如果你用的是Ubuntu對應(yīng)文件是/etc/apt/sources.list思路一樣把a(bǔ)rchive.ubuntu.com和security.ubuntu.com替換成鏡像站域名。Debian老版本也會有一個sources.list文件原理相同記得把安全更新源security.debian.org也一并替換掉。換完源順手裝幾個基礎(chǔ)工具這一步做完后面的開發(fā)才有底氣sudo apt install -y vim gcc g make gdb curl wget每次裝完系統(tǒng)我都先跑這一條。gcc是編譯C代碼的make是工程管理工具gdb是調(diào)試器curl和wget用來下載東西vim是編輯器。后面寫代碼、看日志、排問題都離不開它們。裝完可以用gcc --version確認(rèn)一下編譯器版本。2.3 建好用戶配好sudo這是開發(fā)者的基本盤用root賬號直接開發(fā)是新手最容易養(yǎng)成的壞習(xí)慣。root一擼到底權(quán)限問題全都被掩蓋了一旦你切換到普通用戶環(huán)境就各種Permission denied然后一臉懵。正確的做法是建一個普通用戶日常開發(fā)都用這個賬號需要提權(quán)時再通過sudo。新建用戶的命令組合如下sudo useradd -m -s /bin/bash dev sudo passwd dev sudo usermod -aG sudo dev解釋一下每一條的作用。第一條創(chuàng)建用戶dev-m參數(shù)自動創(chuàng)建家目錄/home/dev-s參數(shù)指定登錄shell為bash。第二條設(shè)置初始密碼。第三條把dev加進(jìn)sudo組這樣它才能用sudo執(zhí)行管理員命令。你可能會在別的教程里看到adduser命令那是Debian系的高層封裝會順帶創(chuàng)建家目錄、設(shè)置用戶信息適合交互式操作useradd則是底層命令參數(shù)更細(xì)。建完用戶后建議用su - dev切換到新賬號或者干脆注銷重新登錄。這里有個小坑直接敲su dev可能不會自動加載新用戶的環(huán)境變量PATH還是老樣子順手用su - dev或者sudo -i就干凈了。如果你建錯了用戶想刪除用userdel -r dev-r表示連同家目錄一起刪掉。這個命令同樣需要sudo。2.4 把編譯器和Python裝齊跑通第一個程序開發(fā)環(huán)境少不了一套能用的編譯鏈。第2.1節(jié)里已經(jīng)順手裝了gcc、make、gdb這里再補(bǔ)Python相關(guān)部分sudo apt install -y python3 python3-pip python3-venv裝完之后注意Debian系默認(rèn)只有python3命令沒有python這個命令。如果你習(xí)慣敲python可以在~/.bashrc里加一行alias pythonpython3然后source ~/.bashrc生效。這個坑很多人踩過提示“command not found”的時候先分清楚是沒裝還是命令名不對。然后寫第一個C程序驗(yàn)證整個鏈路。用vim或者nano新建一個hello.c#include stdio.h int main(void) { printf(Hello, Linux App Dev\n); return 0; }編譯并運(yùn)行g(shù)cc -o hello hello.c ./hello能打印出Hello, Linux App Dev說明編輯器、編譯器、執(zhí)行環(huán)境全部通了。這里順便解釋一下兩個參數(shù)-o指定輸出文件名如果不寫默認(rèn)生成a.outhello.c是源文件。gcc本質(zhì)上不是自己完成編譯而是調(diào)用cc1、as、ld這些子工具分別完成預(yù)處理、編譯、匯編、鏈接四個階段后面講構(gòu)建原理時再展開。Python這邊也快速驗(yàn)一下寫個簡單的腳本文件python3 -c print(Hello from Python)到這里一套“編輯器編譯器解釋器調(diào)試器”的最小開發(fā)環(huán)境就齊了。后面每一篇的代碼都會基于這套環(huán)境來跑。建議你在這個環(huán)節(jié)給虛擬機(jī)做一個快照接下來折騰文件、進(jìn)程實(shí)驗(yàn)時萬一出了什么岔子回滾很方便。3. 文件與系統(tǒng)調(diào)用開發(fā)者的第一條主線3.1 “一切皆文件”到底怎么理解Linux里有句經(jīng)典的話叫“一切皆文件”很多教程都掛在嘴邊但真正理解它的人不多。普通文件是文件目錄也是文件設(shè)備是文件管道和Socket還是文件所有這些都能用open打開、read/write讀寫、close關(guān)閉這一套接口來操作。內(nèi)核把這些完全不同的東西統(tǒng)一抽象成“文件”你操作的時候不需要關(guān)心底層是磁盤、網(wǎng)卡還是內(nèi)存。具體的載體是文件描述符fd??梢园阉斫獬梢粡埥钑Copen一個文件內(nèi)核給你分配一個非負(fù)整數(shù)比如3之后你所有對該文件的讀寫都拿著這個號去辦。內(nèi)核內(nèi)部維護(hù)了一張打開文件表記錄著這個fd指向哪個inode、當(dāng)前讀到哪里、是讀還是寫模式。用戶態(tài)程序永遠(yuǎn)看不到這些內(nèi)部結(jié)構(gòu)只能持有fd這個“憑證”。三個特殊的fd要記住0是標(biāo)準(zhǔn)輸入1是標(biāo)準(zhǔn)輸出2是標(biāo)準(zhǔn)錯誤。所以printf最終是往fd 1寫fprintf(stderr, ...)是往fd 2寫。這個設(shè)計(jì)帶來的好處是shell的重定向本質(zhì)上就是替換fd指向的目標(biāo)ls out.txt就是把1號fd從終端設(shè)備改指向out.txt這個文件。學(xué)習(xí)的時候要區(qū)分兩套API。C標(biāo)準(zhǔn)庫的fopen、fread、fwrite、fclose是帶緩沖的用戶態(tài)封裝底層還是要調(diào)用open、read、write這些系統(tǒng)調(diào)用。為什么要加一層緩沖因?yàn)槊看蜗到y(tǒng)調(diào)用陷入內(nèi)核都有開銷頻繁小字節(jié)讀寫很不劃算glibc先把數(shù)據(jù)攢在用戶態(tài)緩沖區(qū)里攢夠了再一次flush到內(nèi)核性能提升非常明顯。這就是為什么讀文件用getchar()、用fgets()都不要跟read()混著寫——緩沖邏輯會互相干擾。3.2 open/read/write最小程序背后全是細(xì)節(jié)直接上一個最簡單的文件讀取程序。這段代碼是我每次帶新人都會讓ta從零敲一遍的別看短信息量很大#include stdio.h #include fcntl.h #include unistd.h #include errno.h #include string.h int main(int argc, char *argv[]) { if (argc 2) { fprintf(stderr, usage: %s file\n, argv[0]); return 1; } int fd open(argv[1], O_RDONLY); if (fd 0) { fprintf(stderr, open %s failed: %s\n, argv[1], strerror(errno)); return 1; } char buf[256]; ssize_t n; while ((n read(fd, buf, sizeof(buf) - 1)) 0) { buf[n] \0; printf(%s, buf); } if (n 0) { perror(read); } close(fd); return 0; }編譯運(yùn)行g(shù)cc -o dump dump.c ./dump /etc/passwd第一行open的調(diào)用第一參數(shù)是路徑第二參數(shù)O_RDONLY表示只讀打開。這里還有一個常見組合O_CREAT配合第三個參數(shù)mode指定創(chuàng)建文件時的權(quán)限比如open(a.txt, O_WRONLY | O_CREAT, 0644)。注意0644的權(quán)限會被umask影響最終文件的權(quán)限等于mode減去umask的屏蔽位這是新手經(jīng)常困惑的點(diǎn)。read的返回值是整篇代碼的靈魂一定要背下來返回正數(shù)表示實(shí)際讀到的字節(jié)數(shù)返回0表示讀到EOF文件末尾返回-1表示出錯具體錯誤類型看errno。這段代碼里用while循環(huán)反復(fù)read是標(biāo)準(zhǔn)讀法。還有個隱蔽的坑是EINTR當(dāng)進(jìn)程被信號打斷時read可能返回-1并且errno等于EINTR這時候不是出錯而是應(yīng)該重試。真正嚴(yán)謹(jǐn)?shù)纳a(chǎn)代碼會在循環(huán)里判斷EINTR繼續(xù)讀篇幅原因不展開但面試時能主動提這一點(diǎn)加分不少。編譯這段代碼命令行先用./dump一個不存在的文件觀察open失敗后strerror(errno)打印出來的信息。再把它重定向到文件./dump /etc/passwd out.txt對比終端輸出和文件內(nèi)容的差異。這套組合拳打下來你對系統(tǒng)調(diào)用錯誤處理、fd重定向的體會比背十遍“文件描述符是什么”都有用。3.3 目錄、鏈接和刪除背后的邏輯文件系統(tǒng)這塊面試高頻點(diǎn)集中在硬鏈接、軟鏈接和刪除的原理上。ls -l看到的文件信息第一列權(quán)限位、第三列鏈接計(jì)數(shù)很多人在這一層就停了。我建議你把鏈接計(jì)數(shù)和inode串起來理解。inode是文件系統(tǒng)里真正存儲元數(shù)據(jù)的結(jié)構(gòu)體文件名通過目錄項(xiàng)指向inode。硬鏈接本質(zhì)上是給同一個inode新增一個目錄項(xiàng)所以硬鏈接文件的inode編號相同鏈接計(jì)數(shù)會增加。刪文件執(zhí)行的系統(tǒng)調(diào)用叫unlink它的語義不是“立即銷毀文件”而是減少鏈接計(jì)數(shù)只有當(dāng)鏈接計(jì)數(shù)降到0并且沒有進(jìn)程打開這個文件時inode才會被真正釋放。這也是為什么運(yùn)維環(huán)境中“刪了大文件但磁盤空間沒釋放”的常見原因文件被某個進(jìn)程打開了你只是刪掉了目錄項(xiàng)。軟鏈接則是創(chuàng)建了一個獨(dú)立文件內(nèi)容指向另一個路徑用ln -s創(chuàng)建。源文件刪除后軟鏈接會成為懸空鏈接指向一個不存在的文件硬鏈接則完全不受影響。體現(xiàn)在目錄上rmdir只能刪空目錄rm -rf能遞歸刪除目錄樹。很多人覺得“l(fā)inux刪除文件夾命令”就是rm -rf一個命令的事但實(shí)際開發(fā)里理解rmdir和rm的差別、理解unlink的引用計(jì)數(shù)語義遇到奇怪的“文件刪不掉”“空間沒釋放”問題時才知道往哪個方向查。查看文件元數(shù)據(jù)用stat命令比如stat example.txt能看到inode號、文件類型、權(quán)限、大小、時間戳。C語言里對應(yīng)的系統(tǒng)調(diào)用也叫stat通過struct stat結(jié)構(gòu)體拿信息。這一條線上來文件操作的系統(tǒng)調(diào)用基本就通了。4. 進(jìn)程應(yīng)用層開發(fā)的第二條主線4.1 進(jìn)程和你見過的ps/top終于對上了文件是靜態(tài)資源進(jìn)程是動態(tài)執(zhí)行體。一個進(jìn)程的概念包含代碼、數(shù)據(jù)、堆棧、打開的文件描述符、環(huán)境變量這些內(nèi)容內(nèi)核用進(jìn)程控制塊也就是task_struct結(jié)構(gòu)體來管理。理解進(jìn)程核心先記住三個身份標(biāo)識PID是進(jìn)程自己的編號PPID是父進(jìn)程編號PGID是進(jìn)程組編號。每次你敲ps -ef輸出的第一列PID和第三列PPID就是這層關(guān)系。查看進(jìn)程狀態(tài)的命令建議形成組合ps -ef適合一次性快照top適合動態(tài)監(jiān)控htop交互更好看但需要apt安裝。top里的%CPU和%MEM別只看數(shù)字多看看load average那一行的三個值代表1分鐘、5分鐘、15分鐘的平均負(fù)載。更內(nèi)核一點(diǎn)的信息在/proc目錄下每個進(jìn)程一個編號目錄/proc/self/cmdline、/proc/self/status這類文件是深入排查問題的入口。這里有一個很實(shí)際的面試考點(diǎn)如何修改進(jìn)程名稱。搜“l(fā)inux修改進(jìn)程名稱”能看到一堆方案主流有三種。第一種是在shell層用exec -a newname ./programLinux的execve會按argv[0]設(shè)置進(jìn)程名第二種是在程序里調(diào)用prctl(PR_SET_NAME, newname)這個能改的是/proc/self/comm里的名字ps里顯示的COMMAND列會變成newname第三種是直接修改argv[0]的內(nèi)存內(nèi)容老江湖的做法。理解這個知識點(diǎn)不是為了花哨而是排查問題時你能從進(jìn)程名快速定位這是哪個服務(wù)實(shí)例。4.2 fork一次兩個世界別被返回值繞暈進(jìn)程創(chuàng)建最經(jīng)典的系統(tǒng)調(diào)用是fork。fork的語義是“當(dāng)前進(jìn)程復(fù)制一份自己”復(fù)制出來的叫子進(jìn)程原來的叫父進(jìn)程。但這個“復(fù)制”不是把內(nèi)存全部拷貝一份——現(xiàn)代Linux用的是寫時復(fù)制技術(shù)父子進(jìn)程先共享同一份物理內(nèi)存只有在某個進(jìn)程真的要寫數(shù)據(jù)時才逐頁復(fù)制這樣fork的開銷非常小。寫了這段代碼跑一跑#include stdio.h #include unistd.h #include sys/wait.h int main(void) { printf(before fork, pid%d\n, getpid()); pid_t pid fork(); if (pid 0) { perror(fork); return 1; } if (pid 0) { printf(child: pid%d, ppid%d\n, getpid(), getppid()); } else { printf(parent: pid%d, child%d\n, getpid(), pid); wait(NULL); } return 0; }編譯運(yùn)行后你會看到“before fork”打印一次而fork之后的代碼執(zhí)行了兩份。fork返回值是理解的關(guān)鍵在子進(jìn)程中返回值是0在父進(jìn)程中返回值是子進(jìn)程的PID如果反過來父進(jìn)程拿不到自己父進(jìn)程的PID。所以代碼里的分支寫法pid 0走子進(jìn)程邏輯else走父進(jìn)程邏輯這是標(biāo)準(zhǔn)模式。講進(jìn)程就繞不開孤兒進(jìn)程和僵尸進(jìn)程。孤兒進(jìn)程是父進(jìn)程先退出了子進(jìn)程被init進(jìn)程收養(yǎng)僵尸進(jìn)程則是子進(jìn)程已經(jīng)退出但父進(jìn)程沒有調(diào)用wait/waitpid去回收它的退出狀態(tài)導(dǎo)致任務(wù)結(jié)構(gòu)體還在內(nèi)核里占著一個進(jìn)程表項(xiàng)ps命令里顯示為Z狀態(tài)。僵尸進(jìn)程無法被kill殺死只有父進(jìn)程退出、讓init接管后才會被回收。解決問題的方式只有一個父進(jìn)程務(wù)必wait。這也是上面代碼里wait(NULL)存在的原因——不只是等待更是回收避免產(chǎn)生僵尸。4.3 進(jìn)程間通信先建一張地圖別急著寫代碼進(jìn)程間通信的內(nèi)容非常多管道、信號、共享內(nèi)存、消息隊(duì)列、Socket、DBus每一個都夠?qū)懸徽?。?篇我的建議是不要急著調(diào)API先把這張地圖建立起來知道每種IPC適合什么場景后面展開的時候你才有體感。通信方式方向性適用場景是否依賴內(nèi)核對象管道(pipe)單向父子進(jìn)程之間、shell管道符是命名管道(FIFO)單向無親緣關(guān)系進(jìn)程之間是信號(signal)單向通知事件如CtrlC、kill是共享內(nèi)存雙向大數(shù)據(jù)量、高性能通信是需自己加鎖消息隊(duì)列雙向傳遞結(jié)構(gòu)化消息是Socket雙向跨機(jī)器通信、網(wǎng)絡(luò)服務(wù)是DBus雙向桌面應(yīng)用、系統(tǒng)服務(wù)間是我最??吹叫率址傅腻e誤是想要高性能就盲選共享內(nèi)存結(jié)果被同步和并發(fā)問題折騰到崩潰。共享內(nèi)存確實(shí)最快因?yàn)樗〉袅藘?nèi)核態(tài)和用戶態(tài)之間的數(shù)據(jù)拷貝但這也意味著你必須在用戶態(tài)自己用信號量或者鎖來保護(hù)臨界區(qū)。相比之下管道和消息隊(duì)列雖然每次傳輸有拷貝開銷但內(nèi)核幫你把同步問題解決了簡單場景里反而是更穩(wěn)的選擇。DBus很多人沒聽說過但在桌面Linux里它無處不在桌面環(huán)境和系統(tǒng)服務(wù)之間的通信就是通過DBus。搜“l(fā)inux d bus通訊”會發(fā)現(xiàn)它有自己的消息協(xié)議、名字總線和對象模型和傳統(tǒng)IPC差異很大。這個知識點(diǎn)作為應(yīng)用層開發(fā)的加分項(xiàng)后面單開一篇講第1篇你知道它屬于IPC家族就夠了。5. 第1篇最容易踩的坑附排查速查表5.1 命令找不到、庫找不到、頭文件找不到環(huán)境搭好后第一個讓人抓狂的問題是“明明我裝了東西系統(tǒng)卻告訴我找不到”。這類問題九成出在PATH環(huán)境變量上。用which命令查命令的絕對路徑用echo $PATH看當(dāng)前PATH包含哪些目錄。比如你自己編譯的程序放在/opt/myapp/bin下卻直接敲myapp提示command not found那就需要export PATH$PATH:/opt/myapp/bin寫進(jìn)~/.bashrc才能每次登錄自動生效。編譯C程序時提示“fatal error: xxx.h: No such file or directory”這是頭文件找不到通常需要apt install相應(yīng)的-dev包。比如編譯依賴libssl的程序就要裝libssl-dev。如果你的自定義頭文件不在/usr/include里編譯時用-I參數(shù)指定路徑gcc -I./include main.c。鏈接階段報(bào)“cannot find -lxxx”是動態(tài)庫找不到用-L指定庫目錄或者用ldconfig -p先查系統(tǒng)里有沒有這個庫。弄明白這套機(jī)制以后搜“l(fā)inux常用命令大全”就不會死記硬背了which、whereis、locate、ldd、ldconfig是五個定位工具。前兩個查命令locate查文件可能要updatedb更新索引ldd查可執(zhí)行文件依賴的動態(tài)庫ldconfig管理動態(tài)庫緩存。排查鏈路清晰問題就解決了一半。5.2 編程常見報(bào)錯對照著查這一小節(jié)直接給一張速查表都是我實(shí)際帶人時見到的最高頻錯誤。現(xiàn)象/報(bào)錯常見原因處理思路Permission denied文件權(quán)限不夠、文件屬主不對ls -l查看權(quán)限chmod修改chown改屬主No such file or directory路徑寫錯、動態(tài)庫缺失、軟鏈接懸空先檢查路徑再用ldd查動態(tài)庫command not foundPATH未包含、命令未安裝、命令名不同echo $PATH確認(rèn)which定位注意python3不是pythonSegmentation fault空指針解引用、數(shù)組越界、棧溢出編譯加-g用gdb跑bt查看調(diào)用棧磁盤空間不足inode耗盡或block占滿df -h和df -i對照刪大文件或清無用inodeapt update很慢源服務(wù)器訪問慢換國內(nèi)鏡像源見第2.2節(jié)程序運(yùn)行后無輸出緩沖未刷新、stdout重定向printf主動fflush(stdout)或向stderr輸出段錯誤是新手最慌的。我的建議是遇到段錯誤不要重新編譯瞎試先檢查解引用指針前是否為NULL再看數(shù)組下標(biāo)有沒有越界最后用gdb。編譯時務(wù)必加-g參數(shù)保留調(diào)試信息然后gdb ./program運(yùn)行到崩潰后輸入bt能看到崩潰時完整的函數(shù)調(diào)用棧。這個流程走順了段錯誤對你來說就不是玄學(xué)而是邏輯問題。5.3 學(xué)完這章給自己做個自測對一個系列筆記來說第1篇的終點(diǎn)不是讀完而是能獨(dú)立回答幾個問題。我自己帶人時習(xí)慣把這幾個作為“篇末考核”你可以對照著自測第一能不能說清楚open和fopen的區(qū)別能說出fopen是用戶態(tài)緩沖封裝、open是系統(tǒng)調(diào)用并且講明白為什么文件I/O要加緩沖這一關(guān)就過了。第二能不能解釋僵尸進(jìn)程產(chǎn)生的原因和回收方法如果只知道“子進(jìn)程死了沒被收走”說不清wait/waitpid的作用建議把4.2節(jié)的代碼再敲一遍父進(jìn)程先注釋掉wait試試觀察ps里的Z狀態(tài)。第三能不能畫出用戶態(tài)和內(nèi)核態(tài)的邊界并且說出三個常見的系統(tǒng)調(diào)用名字能說出open、read、write、fork、mmap里的任意三個并且知道系統(tǒng)調(diào)用是應(yīng)用訪問內(nèi)核資源的唯一入口就不算白學(xué)。面試?yán)镞€有一個非常經(jīng)典的組合題程序從命令行啟動到main函數(shù)執(zhí)行中間經(jīng)歷了什么。這個題在第1篇里可以講個大概shell解析命令通過execve系統(tǒng)調(diào)用加載程序內(nèi)核解析ELF文件格式加載代碼段和數(shù)據(jù)段動態(tài)鏈接器ld.so解析依賴的共享庫完成重定位最終跳轉(zhuǎn)到入口函數(shù)由C運(yùn)行時設(shè)置棧和參數(shù)再調(diào)用main。能把這串流程講下來說明你對“程序怎么活起來”已經(jīng)有一個結(jié)構(gòu)化認(rèn)識這是第1篇真正想要給你的東西。我個人在實(shí)際操作中最深的體會是這套流程看著多但每一步都有對應(yīng)的觀察工具。文件部分用strace看系統(tǒng)調(diào)用進(jìn)程部分用ps和/proc看狀態(tài)網(wǎng)絡(luò)和IPC后面還會用到ss、perf。工具不是用來背的是在你建立模型的過程中自然長出來的。第1篇先到這里建議你把文章里的每一個代碼片段都親手敲一遍改一改參數(shù)跑一跑再對照著看strace的輸出。只有自己動手觸發(fā)過Permission denied、段錯誤、僵尸進(jìn)程這些知識點(diǎn)才算真的長在身上。下一篇我會展開文件I/O的進(jìn)階版重點(diǎn)把緩沖、mmap和零拷貝講清楚到時候見。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
高颜值美女口爆高潮浪叫| 中文字幕久热视频在线| 久热九九| 天堂亚洲精品| 国产精品三级视频网站| 91天天综合网,天天综合网| 五月色网| 色97综合中文字幕| 97精品熟女少妇一区 | 国产后入式在线观看| 亚洲欧美日韩制服另类| caopeng97| 韩国一级做a久久久久| 国内自拍 日韩激情 99| 国产精品粉嫩福利在线| 亚洲图片欧美在线视频| 久久综合97| 99操碰| 2017天天操天天日| 久操大香蕉| 日韩91网| 久久九七| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 亚洲男人的天堂网| 蜜乳AV一区| 夜夜爽爽夜夜精品视频| 五月婷婷久久综合| 搡老女人老91二区| 国产精品制服丝袜中文字幕日韩一区二区三区 | 91日产桃蜜| 色色色色电影网| 欧美+日产+中文| 亚洲AV乱码专区国产噜噜亚洲 | 丰满熟妇大乳做爰| 超碰97久久观看| 蜜臀久久99精品久久久电影| 裸模AV女优| 日本人妻中文字幕精品| 91天天c| 国产不卡免费在线视频| 日本伦乱九九九综合| 禁止观看美女黄| 影音先锋视频在线| 国产精品69久久久久久久| 日韩无码成人电影| 蜜乳中文字幕a在线| 久久超碰免费的| 日本色色色视频| 91少妇高潮| 国产久久久9999| 超碰在线香蕉| 天堂性色| 是还免费视频1727我| 日韩一级免费性爱| 国产无码精品无码| 97碰碰色| 伦在线97| 五月丁香网站| 国产一级137片内射麻豆| 牛牛久久国产精品视频一二三| 国产精品制服丝袜清纯唯美| a'v在线资源| 色九九九综合| 国产亚洲一黄| 无码人妻丰满热妇又大又粗| 免费观看成人www精品视频| 精品亚洲俞拍视频一区| 五月婷婷六月色| 色欲久久久久综合网| 久久九九精品一区二区 | 免费AV中文网在线观看| 欧美亚洲韩国视频十五区| 欧美三级不卡| 久久露脸国产老熟女| 日韩福利电影网| 日本熟妇色熟妇在线视频播放| 又黄又爽在线观看视频 | 美女性91| 啊v在线观看视频| 日韩二区三四区五区六区在线看| 高清不卡一二三区视频......| 日熟女| 欧美性夜| 91女色| 麻豆人妻偷人精品无码视频| 国产一区麻豆免费观看| 久久超碰亚洲人| 高清国产av无码| 天天操夜夜嗨| 国产欧美岛国精品一区| 激情五月综合开心五月| 人人操欧美风骚| 高精欧美色| 欧美日韩天堂| 9久精品视频在线观看| 久久久艹艹艹| 天天欧美欧美亚洲网| 亚洲制服欧美另类内射| 激情丁香五月婷婷| 久色网| 中文字幕精品资源在线| 中国女人内射6XXXXX| 天堂69亚洲精品中文字| 97久久超碰| 97久久超碰日韩精品| 夜夜嗨免费视频| 综合天天。| 天天操人人操骚逼网站| 天堂亚洲精品久久老牛| asc国产精品| 天天天肏屄欧美| 久操精品网| 久草草一二三四区久久| 亚洲视频一二区| 躁躁日曰躁2020| 久久久久七视频| 亚洲第一页欧美| xxx亚洲午夜天堂| 久久9久9久99久9久9| 久久精品视频久久久| 亚洲激情网一二三四区| 亚 欧 美 综合| 亚洲综合小说另类图欧美视频激情小说色五月天 | 国产精品久久久视频| 天堂蜜桃无码视频一区二区| 99热导航| 日韩国产九九精品一区二区三区毛片 | 草草网站影院白丝内射| 黄色高清无码无码破解免费暗网| 亚欧国产无码精品在线| 国产精品久久久亚洲一区| 日本人体九九九九九九| 欧美熟女妇同| 欧美天天影院| 国产精品久久久吖| 欧美黄色大香蕉一区二区| 激情五月天丁香| 999日韩中文精品观看视频。| 91neishe| 亚洲视频二区| 三级色影综合网| 国产精品视频自拍在线| 亚洲综合一区二区| 人妻少妇视频在线播放| 久色99999| 亚洲欧洲激情卡通另类文学四射小说网站 | 五月丁香黄色网| 日韩性爱1级片视频| 国产麻豆一级精品视频| 无码一区二区三区四区五区六区七区八区九区十区视频 | 色欧美天天| 激情文学 国产一二三aV| 99re这里| 大色综合| 福利在线观看一区二区| 青青草日本无码| 九九九九免费高| 夜夜夜夜久久久久| 亚洲最新中文字幕免费| 有码免费观看| 久久这里只精品| 韩国手机不卡无码三级视频| 99在线观看| 欧美日韩国产电影| 1区2区3区视频| 国产毛片在线| 久久久性爱视频| 日韩欧美麻豆 | 亚洲加勒比| 亚欧国产无码精品在线| 国产二区三区粉嫩在线| 国产精品久久天天干| 免费精品福利在线观看| 91嫩草欧美| 午夜男人的天堂| 国产精品69人妻无码久久久| 蜜臀在线免费观看在线免费观看| 精品在线78| japan日本高清乱xxxx| 夜夜夜久久| 校园春色亚洲色图| 牛牛aV| 99在线观看无大码| 呦呦一区| 国产不卡精品91| 精品国产乱子伦一区二区三区,精品一| 亚洲小电影免费涩涩成人在线高清| 成人短视频在线观看| 日本加勒比无码专区一二三| 久操操AV电影| 97久久免费| 丝袜人妻av一区二区| 久久亚洲不卡| 老熟女网站| 人妻熟女午夜精品在线| 揉揉揉夜夜| 婷婷中文网| 成人一区二区三区四区| 日逼视频日本| 中文字幕一区二区三区蜜桃视频| 亚欧高清在线| 精品成人久久久人人亚洲| 2021久久国产综合精品青草| 99精品高潮| 曰本人妻人人澡人人夹| 色天堂在线观看| 天天做日日做| 插入粉嫩少妇视频| 91久久精品国产| 屁股久久久久久久久久| 91xingse| 久久久精品电影| 性生活久久久久久久久久| 欧美日韩国产一区二区小黄片大全| 嗯嗯,啊啊,国产精品| 日韩在线观看三级电影| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 97精品一区二区视频| 亚洲情色一区三区| 国产熟女完整版中字| 蜜桃久久一区二区| 97综合国产| 成人在线视频网| 日韩欧美中文字幕搭讪巨乳美人妻视频| HEYZO高无码国产精品227| 任你干在线视频| 欧美刺激色黄片免费看| 久草这里只有精品 | 午夜αv| 乱日视频| 国产亚洲美日韩Aⅴ中文字幕无码成人| 亚洲青色欧美| 丁香五月婷婷基地| 男人午夜天堂| 国产后入清纯| 亚洲天堂男人在线| 秋霞网—男女啪啪亚洲免费体验区| 亚洲 欧美 小说| 日韩不卡毛片Av免费高清| 亚洲在线A| 日本91白丝| 97精品一区二区视频| 久草在| 婷婷香蕉| av在线免费一区二区| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 殴美日韩m| 久久精品店| 60秒不遮不挡| SUV一区二区在线看| AV综合中文字幕干| 性性欧美| 国产精品毛片?v一区二区三区 | 嫩草 人人网精品| 最新亚洲人成网站在线影院| 久久熟女精品不卡一区| 人妻久热在线| 大香蕉婷婷| 久久久精品电影| 男人天堂最新手机版在线青青草| 97AV在线免费观看| 欧美九九爱| 日韩欧美经典在线观看| 国产精品亚洲一级av第二区| 五十路一区无码| 综合激情一一91| 日本青青草在线| 九九在线精品| 成人免费在线网站| 韩国一级婬片A片无码天美| 欧美黑人与女人91| 日本熟妇自慰性高潮一区二区三区| 日韩精彩免费| 久久怡红院| 熟女色综合久久| 欧美日韩插逼视频| 肏逼视频日本| 强奸乱伦免费网站| 亚洲中文字幕熟女| 91九色丨风韵犹存| 亚91网| 是还免费视频1727我| 九月丁香婷婷| 亚洲日本加勒比在线| 国产精品无码论坛| 一本一道vs波多野结衣| 亚洲精品国产熟女| 人妻少妇被猛烈进入中| 免费看黄片现成| 日日超碰亚洲| 大象AV在线| 欧美极品| se吧提供国产乱老熟视频胖女人| 亚欧免费观看视频| 日韩三级在线观看网站| 青青操网| 高清无码一区二区三区| 国产精品久久久久久久电影渣男| 69XX一中文字幕人妻91| 岛国福利在线精品播放| 亚洲一区日韩精品| 亚洲精品国产熟女| 日本五十路熟女一区二区| 国产探花精品在线| 美國A片| 天天做日日做天天欢。| 蜜乳AV色欲AVAV无码| 首页中文字幕中文字幕免费| 色婷五月天| 五月天综合网| 欧美综合站| 狼人综合婷婷激情四射| 色女99一级片在线观看| 中文字幕78| 超碰这里有精品| 99热这里只有精品1| 欧洲视频在线| 超碰97人妻| 亚洲国产成人精品久久久国产成人一区二区 | 97中文天堂| 欧美日韩理论一区| 久久精品人妻一区二区三区| 国内精品99999| 97超碰久久| 综合亚洲欧美精品日韩?v| 被男人添B超爽视频| www.久久最新地址| 亚洲激情网| 国产精品一二三免费网站| 天堂蜜桃无码视频一区二区| 99re8免费高清在线| 综合激情一一91| 天躁夜夜躁2021| 欧美亚洲天堂| 国产区性爱在线视频秋霞豆| 天天摸天天插天天日| 国产亚洲欧洲在线观看| 精品人妻一区二区蜜桃视频 | 91蜜桃传媒精品久久久一区二区| 91 欧美| 十八禁av无码免费网站APP| 亚洲砖码砖专无区2023| 白丝少妇一区二区| 蜜臀久久99精品久久久久久酒店| 另类图片欧美激情综合| 综合网,亚洲,欧美| 九九九只有精品| 狠狠91| 国产一区二区精品久久99| 91日韩在线| 人人超碰在线观看黄| 后入综合久久| 偷拍亚洲熟女视频播放| 99re视频在线观看这里只有精品| 亚洲欧洲无码97久久精品| 91日韩网站| 成人av性爱电影在线观看| 色综合色欲色综合色综合色综合| 日韩欧美丝袜诱惑| 一道α片欧美| 人人做,人人操,人人摸| 操逼逼无码| 夜夜操老骚逼视频网站| 欲色综合| 26uuu国产免费观看| 中文字幕一区二区三区人妻少妇在线| 我爱操| 超碰97 线线 在现| 久久久久久九九九| 日韩av影片在线观看| 美腿色图| 97爱| 亚洲综合113页| 亚洲天堂另类| 综合网色| 一卡二卡三卡| 亚洲啪啪性视频| 天天操天天日天天干| 日B操| 91天天日| 亚洲超碰97| 九九久久99| 国偷自 一区| 手机在线播放国产福利| 日本不卡二三区| 欧美区亚洲区偷拍区 | 加勒比综合在线| 日韩视频啪啪| 国产精品999zyz| 四虎884a| 亚洲高清国产理伦片| 亚洲限制级| av无线看| 中文字幕乱偷人妻久久艾草网| 人人操人人操人人人操| 99久久9| 国产乱码精品一区二区三区四川| 国内一区二区三区| 久久一区二区三区入口| 一区二区播放| 色五月激情网| 日本欧美中文字幕| 亚洲精品久久久久久久蜜桃臀| 欧美 日韩 亚洲 春色| 国产成自自拍在线观看| 人人贴人人摸| 久久9 9 9精品| 欧美色网| 久久综合女优| 亚洲中文字幕av| 欧美激情在线观看视频| 欧美成人9797| 亚洲一区二区三区不卡国产欧美| 国产精品电| 婷婷伊人网| 久久午夜色播影院免费高清| 色女99一级片在线观看| 亚洲最大的综合性av| 99超碰网| 97激情97激情| 国产区性爱在线视频秋霞豆| 91青青| 丰满翘臀美女影院视频| 国产一区自拍欧美日韩| 99福利社| 91在线综合网| 亚洲国产成人精品无码专区| 欧色网址| 日本大香蕉| 亚洲精品日日夜夜52| 淫荡网址| 97欧美日韩精品| 亚洲天堂男人天堂| 久久久久9| 啪啪一区| 99精品欧美一区二区三区桃色| 国产精品禁久久久精品| 亚洲一二三精品久久网| 中文字幕精品资源在线| 中文字幕在线免费观看2| 久久久久9| 97超碰碰碰| 艹少妇网站| 亚洲av青草久久一区二区| 亚洲综合一| 欧美精品人妻视频| 亚洲精品三| 麻豆国产视频精品观看| 日韩有码中文字幕女同性恋 | 色综合久| 99re国产精品视频| 搡老熟女免费视频| 人人妻人人爽| 日本黄色XXX| AV高清一区| 天天天天干| 激情综合二| 97色伦97色伦国产欧美| 欧美性性性| 亚洲情色综合网| 97 国产一区| 日韩草久视频| 五月天精品| 亚洲一卡2卡3卡4卡乱码网站 | 亚洲操逼视频网站| 国产乱伦亚洲| 欧美操人视频| 97爱综合| 欧美日韩在线小说| 亚洲图片欧美偷拍| 九七超碰人人乐| 97久久国产精品| 2026国产精品视频| 国产精品欧美激在线| 97超碰碰碰| 欧美激情综合色综合啪啪五月| 欧美精品久久久久久久久88| 中文字幕91页| 久久社区一区二区三区| 蜜乳Av成人片网站| 成人精品一区二区91毛片不卡| 97超碰人人操人人操| 国产精品扒开腿做爽爽爽视频| 天堂亚洲欧美| 死我十八禁| 狠色婷婷久久一区二区三区_| 性欧美天天| av婷婷色网| 国产视频一区二区三区久久亚洲天堂| 日韩av熟女一区二区三区成人| 97精品国产97久久久久久| 六九九九| 丰满少妇一区二区三区专区| 天堂日本亚洲欧美| 欧美,日韩综合久久| 亚洲AV乱码专区国产噜噜亚洲| 欧美男人一区| 少妇免费视频| 日本日日色视频| 2019天天操天天爽天天拍| 久久中文色图| 日韩精品9区| 干妹子| 欧美在线亚洲| 免费一二区| 白丝被操91| 国产亚洲精品激情| 日本人人操人人操| 五月激情综合网| 一色网男人的天堂| 性色国产东北露脸精品视频| 午夜毛片高清免费不卡| 欧美九一精品久久久熟妇| 99超碰网| 亚洲国产成人7777| 60秒免费小视频| 60秒免费小视频| 99热这里只有精品1| 精品国产乱码久久久久久蜜臀| 中文字幕蜜乳av| 黑人美精品 A片| 五月丁香婷婷啪啪| av亚洲天堂资源网站| 操老熟女AV| 天天色欧美| 精品久久久久久中文字幕三区 | 美国三级日本三级久久99| 欧美日韩性爱视屏免费看了| 久久女婷| 久操操AV电影| 黑人白女精品一区| 婷色五月| 天天操人人操骚逼网站| 麻豆视频一区二区| AAAAAAAAA黄片| 狠狠干综合| 国产丰满少妇久久久精品影院| 欧美黑人91| 绯色一区二区三区不卡少妇| 日本www操操操| 久久天天摸| 免费国产| 人人操人人操人人操人人操人人操人人人11.CM| 草莓精品视频| 美国久久一二三四| 日韩精品-原创伙伴| 欧美激情视频在线一区| 午夜一区| 亚洲欧美日韩国产丝袜自拍中文| 成人无码欧美一级A片狼牙直播| 2024年最新色情网站在线观看| 亚洲砖码砖专无区2023| 欧美色图亚洲色图成人在在线| 久久九操在线观看| 襙一襙| 最新国产亚洲精品精品国产亚洲综合| 四虎影库国产精品免费| 舔人妻中文免费视频| 啪啪视频免费在线观看| 国产精品99久久久www| 夜夜高潮夜夜爽| 蜜臀久久99精品久久久久久婷婷| 亚洲中文字幕三级在线| 亚洲熟女乱色一区二区三区久久久| 久久只有精品| 亚洲āv网址在线观看| 91干熟女| 无码人妻丰满熟妇区毛片| 国产操伦| 日韩99神马视频片| 欧美日韩午夜精品一区二区三区| 精品人妻二区三区| 中文字幕熟女人妻丝袜| 深爱五月天| 18禁久久| 国产一区二区av综合| av麻豆啪啪| 亚洲无码精品AV久久久| 91 丝袜在线| 午夜人人操| 熟女一区二区| 国产无吗在线播放| 久久久久久久伊人精品| 久久精品一区二区三区不卡| 久热伊人| 麻豆亚洲Av成人无码一区精品| 久久一区二区蜜桃| 婷婷香蕉欧美在线一区二区三区| 97免费在线观看| 亚洲欧美一区二区三区在钱蜜桃 | 丝袜综合色图| 久久精品 六十路 熟女 欧美| 嗯嗯嗯啊啊啊操的我好爽| 999久久久免费精品国产牛牛| 有码免费观看| 2018天天干在线视频| 校园春色综合香蕉| 精品区国产区一区二区三区| 午夜亚洲| 国产黄a三级三级三级av在线看| 男人的天堂2019| 亚洲最大的黄色电影网站。| av天堂精品久久| 日本三级韩国三级美三级91| 丁香六月综合激情| 久久久久久久强迫| 老熟妇一区二区三区啪啪| 日韩一级成人毛片免费观看 | 97亚洲中文| 好爽,再快点啊哈嗯嗯嗯嗯| 国产一级内射无挡观看| 日韩成人性爱AV| 五月天人妻综合| 夜夜中出国产| 欧美精品日韩久久久九| 久久风骚城市人| 精品.99999| 国语国产操逼伊人AV网| 丝袜综合网| 麻豆一区二区三区精品| 激情看片网站| 亚洲欧洲中文日韩女优乱码| 97射欧美| 91暧暧| 天天干人妇| 激情综合网激情综合| 蜜屁Av| 91N欧美| 家庭乱伦性爱av| 性色A∨91| 超碰到97情色| 亚欧美天堂在线| 国产精品三级视频网站| www.yeyecao| 久久αⅴ| 加勒比性爱成人在线| 久久久啊啊| 亚洲成av人片色午夜乱码| 东京热视频网| 久久久久久九九九九| 九九九热精品| 91av天美性媒精品视频| 99亚洲精品| 可能人人看人人摸| 亚洲熟伦熟妇AV无码春色| 欧美综色欧| 俞拍自拍| 欧美大片天天看| 免费看污网站| 精品国产乱码久久久久A| 欧美日韩国产高清在线一二三区 | 99无码| 美女十八禁| 欧美中字不卡| 国产成人主播| 色综合潮| 1024亚洲中文字幕久在线看片你懂的| www色色com| 91动漫操逼视频| 精品无码不卡视频| 啪啪啪精品| 狠狠操使劲操| 91搡老女人老妇女老熟女歌词翻译| 不卡六六在线91| 久久宗合亚洲| 99蜜桃臀久久久欧美精品网站| 欧美亚男人的天堂| 欧美熟妇乱码在线一区| 欧美成人9797| 久久综合18p| 欧美 亚洲 综合 制服| 狠狠操狠狠插| 大香蕉色十月| 久久久久13| 又黄又爽在线观看视频 | 亚洲国产成人精品无码专区| 双插性欧美一二三区| 91搞逼视频| 亚洲精品白浆高清久久久久久| 午夜福利国产欧美日韩夜夜| 五月丁香黄色网| 热思思免费视频| 久久中文字幕不卡人妻| 国产成人亚洲精品无码最新在线| 玖玖爱在线视频免费观看| 9色国产精品一区粉嫩| 日韩电影在线观看网址| 强奸乱伦AV一天堂网| 你懂的在线观看区国产| 日韩黄色片子| 丰满岳乱妇一区二区三区| 青娱乐国产精品| 操逼网免费无码视频| 日本三级韩三级99久久| 天天综合网站| 精品久久久九九九孕妇| 色鬼在线综合| 欧色性第一页| 破处bbq| 91精品人妻一品二品三品| 天天亚洲| 午夜福利一区二区影院| 国产欧美岛国精品一区| 狠狠色综合网| 国产精品国产自产拍高清AV| 日本黄色裸日本黄色裸体 | 亚洲aw毛茸茸在线| 大乔未久88一区| 九九九不卡| 无遮挡又黄又刺激的视频| 宅男影院久久久,99| 国产精选三级在线观看| 久操黄色视频| 久久久久斤小| 青青草好吊色| 久久国产性爱| 婷婷五月天社区| 中国黑人三级片网站上区| 熟女露脸激情自拍视频| 91视频综合网| 殴美在线AⅤ| 97天天搞在线| 亚洲图片在线| 操国产逼| 91粉嫩萝控精品福利网站_精品影音先锋国| 丝袜美腿诱惑亚洲欧美视频在线观看| 97 国产一区| 性欧美91| 神马久久久久久伦理片| 猛交交| 亚洲天堂电影网| 亚洲日韩国产精品| 国产精品久久久久无码AV会牛| 精品久久久久,69国产成人精| 欧美 熟女 日韩| 伊人骚琪琪亚洲天堂网站| 国产自产自拍| 九九九午夜| 97 国产精品| 啪啪啪东京| 麻豆天美电影一区二区| 美女骚尻视频| 国产一区免费午夜视频| 欧洲色| 亚洲少妇激情一区二区三区| 尤物av网站免费在线播放| 99ri精品| 91美女视频电影| 无码精品久久| 欧美精品人妻视频| 丝袜美腿丝袜| 极品美女福利在线观看| 大香伊人在线一区| 免费a v| 日本三级中国三级99人妇网站| 黄色十八禁| 伊人精品久久网站| 日韩AV色图| 中文字幕后石码四区五区| 国产精品亚洲一区二区三区四区| 极品后入免费视频| 亚洲国产精品V?在线播放| 久久久精品国产亚洲伊人| 色97欧美| 久久久国产成人一区二区三区在线| 亚洲大胆人体av| ji熟女.com| 啊啊啊好湿久久| 操一操摸一摸| 人人妻人人操人人乐| 97超碰香蕉| 夂久色| 综合色一区三区二区| 热久久这里只有精品| 噜噜噜噜天天狠狠| 精品国产精品一区二区| 香蕉国产97| 丁香六月啪| 美女十八禁| 丁香六月婷婷| 600国产精品视频| 色爱综合网| 美女久久久| 97精品国产97久久久久久免费| 97综合国产| 五月天春色激情网| 天天做天天爱夜夜爽毛片试看| 青青草视频久久久久| 国产真乱mangent| 九九九久久久久| 成人七区| 国产精品一区二区麻豆| 九九久久99| 午夜αv| 日本三级人妻a人妻一在线| 尤物av网站免费在线播放| 口爆欧美91| 波多野结衣一级视频| 久操影视| 五月丁香| 中文字幕人妻资源在线| 日日夜夜噜| 91精品啪在线观看国产城中村| 久啪视频| 91亚洲不卡一区| 18禁免费视频| 亚洲精品熟妇1区2区3区。| 东京日日夜夜| 国产美女自拍AV| 久久人妻一区二区三区高清 | 岛国激情视频在线观看| 土豪酒店各种姿势玩弄极品幼稚| 亚洲第一在线视频| 老司机福利青青草| 狠操91,com| 99热在线播放| 国产又色又粗又黄又爽| 97欧美色| 色综合潮| 操逼日韩无码| 影音先锋日本一区二区| 久久国产精品视频| 操我啊啊啊啊啊| 精品在线观看视频在线| 超碰78| 人妻熟女一区二区| 91国产精品熟女| 爱av免费| 亚洲精品一二牛牛| 色与欲影视天天看综合网| 一区二区三区网站日日骚| 高清无码 国产精品| 99热在线播放| 黄久在线| 午夜福利久久久噜久噜久久综合| 国产精品熟女丝袜一区二区| 激情婷婷综合久久| 久区视频| 91欧美性| 亚洲男人的天堂V| 日本欧美国内在线| 国产黄色影片在线观看| 日本欧美不卡| 色香综合天天影视综合 | 日本精品久久久久久久| 东北黄色电影| 91丨九色丨国产打屁股| 伊人久久大香线蕉无码| 97综合网| 校园春色AV天堂| 加勒比综合a∨| 东北老女人的激情视频| 婷婷香蕉欧美在线一区二区三区 | 亚洲国产尤物yw在线观看| 久久男人天堂| 欲色综合| 亚洲 欧美 日韩另类 麻豆| 91美女色视频亚洲| 少妇诱惑视频| 欧美日韩情色一区二区| 久久激情视频| 欧美日韩操逼嗦吊| av在线免费一区二区| 国产v片在线免费观看| 91天天综合| 人人妻人人澡人人爽久久av| 在线 欧美 亚洲| 超碰97亚洲区| 亚洲视频二区 | 97天天操天天干| 涩爱AV在线| 97国产精品国| ss久久| 97AV爱| 插入综合网| 欧美拳交在线播放| 99爱视频| 九九九九久久久| 欧美激情综合| 亚洲另类在线观看| 婷婷五月色| 色婷婷丁香五月| 99热这里只有精| 国产激情综合| 一本久道久久综合狠狠爱| 五月天婷婷久久| 久久女人一区二区三区| 红杏大香蕉| 3571色综合一区二区二区| 一区二区 韩日AV| 欧美另类色图片| 97舔舔| 国产精品 午夜福利| 亚洲五区熟女| 日韩精品操少妇| 91欧美综合在线| 蜜臀在线看片| 久久女人| 水多多映视AV| 黄色人人| 亚洲午夜福利视频| 婷婷九月色| 成人综合色网| 久久97资源 网| 后入式在线免费观看60秒| 2019午夜福利视频| 亚洲区 欧美区| 久久精品| 欧美性爱第一区| 国产视频一区二区免费| 99热在线播放| 区一在线观看| 免费成人在线熟妇网| 熟女91网| 亚洲天天综合| 777AV电影| 成人在线视频网| 2001天天操| 试看福利| 亚洲无码一区成人免费午夜| 国产内射爽爽大片| 黑人狂躁日本妞一区二区三区| 日本高清一区二区在线| 青青网三级视频| 神马久久啊啊| 亚洲综合网91| 精品人妻中文字幕4399| 国产精品熟女乱伦| 人妻在线中出视频| 美女91av| 超碰97精品| 国产精品美女在线一区| 色婷婷亚洲婷婷| 亚洲综合99999| 亚洲人妻色图| 无码 黑人一区二区三区| 日韩女模中文造逼| 久久蜜桃综合网| 四虎影视国产精品| 免费αV在线视频| 日韩性爱高清免费视频| 欧洲射精91| av影院十区| 岛国大片国产| 九九久久九九久久| 97久久国产亚洲精品超碰热| 97色97干| 一区二区三区欧美激情| 上床不卡网站| 欧美高清第一页| 人人摸人人叼| 一区二区三区蜜桃成人撸久久东京热 | 女同亚洲欧美一二三区久久电影| 青青伊人加勒比海| 日韩欧美亚洲自拍偷拍| 国产成人自拍视频在线| 天天舔九色婷婷| 色欧洲| 色99视频| 黄久在线| 高潮毛片无遮挡高清免费| 中文啪啪视频| 中国91AV| 人妻精品视频一区二区| 成人精品一区二区三区| 亚洲高清视频在线免费观看| 色婷婷综合视频| 高清不卡 中文 人妻| 天天躁日日躁成人字幕aⅴ| 大香蕉手机在线视频| 狠狠入| 91在线无码精品秘 软件| 蜜桃久久久久久久久久久久| 色综合一本| 久久精品亚洲婷婷| 国产精品久久久久久久久久久久久久| 中文字幕123| 动漫av中文| 26uuu欧美日韩| 少妇人妻无码| 粉嫩av平台| 1956日韩精品| 精品人妻av区天天看片| 丁香激情五月| 99999国产| av九九| 青青在线视频免费| 天天天天操| 日日躁夜夜躁狠狠躁超爽| 高清在线偷拍自拍视频| av日韩中文字幕| 3p国产欧美99热| 97超碰影音| 午夜精品视频777| 强乱老妇中文字幕| 亚洲午夜AV| 天天干人人乐| 色噜噜综合在线| 国产成人久久精品蜜臀| 日本熟妇熟色97一本在线观看| 在线不欧美| 精品免费1| 在线观看不卡一区二区三区| 欧美熟女妇同| 在线国产福利网址导航| 欧美亚洲综合999| 国产女性无套 免费观看| 国产97在线播放| 天天爽天天操| 欧美性第一页| 欲色影视综合吧| 91午夜无码| 色97综合中文字幕| 开心五月婷婷激情| 蜜臀久久99精品久久久| 夜夜狼人妻| 亚洲第一黄色av网站 | 97精品视频免费| 国产理论视频在线播放| 欧美偷偷网| 懂色AV一区二区三区| 久久精品国产亚洲AV清纯| 四虎免费看黄| 日本www操操操| 中文字幕AV中出| 中文字幕 一区二区 亚洲无码| 国产男女边吃边摸视频网站| 色妇91| 日本天天操| AA级电影三区| 五月天亚洲网| 精品视频久久久久九九九九9999| 亚洲一区日韩精品中文字幕 | 中文字幕一区 二区三四五 区日 日骚| 亚洲伊人成综合成人网| 日韩资源网| 国产原创自拍| 操www| 欧美情色亚洲| 熟女天天干| 日韩人妻无码专区| 日韩免费福利在线观看| 韩国毛片一区二区三区| 大香蕉碰| 18禁网站在线播放| 性色亚洲| 大香蕉在线SuP| 久久精品视频久久久| 色乱二区| 亚洲不卡三级手机播放| 久久9精品网站| 国产有码一区| 乱色视频中文字幕| 51久久夜色精品国产麻豆| 日韩欧美女求操每天更新| 亚洲情色图片区| a久久| 午夜影美女日鸡鸡天天视频国产| 成人性交免费视频| 日本熟妇色熟妇在线视频播放| 一二三四日本视频高清| 青娱乐久久艹| 日韩中文字幕视频| 人人妻人人爽一区二区三区| 色九九九综合| 97干com| 欧美日韩成人| 乱欲一区二区| 中文字幕一区二区三区字幕| 97国产精品一区| 色色青青久久| 五十路熟女工口 | 欧美性爱一内片一区二区三区| 国产激情综合| 丝袜美腿制服人妻二区中文字幕| 日韩三级在线观看网站| 神马麻豆福利院| 2019男人的天堂| 91国产美女丝袜足交精品视频| 天综合网| 天天色粽合合合合合合合| 图片区小说区| 国产AV激情无码久久无码 | 国产精品白丝www| 十八禁电影伊人网| 欧美性生活内射| 日韩超碰精品综合| 色女女女导航| 伊人成人中文字幕久久网| 日本污ww视频网站| 黄aaaaaaaaaaaaaaaaaa色网站| 国产精品人妻熟女aⅴ| 国产无马在线| 精品三级在线专区| 日本成人在线不卡一区二区三区| v91av| 男人久久天堂| 午夜爽爽爽| 亚洲色宗合| 97在线免费看视频| 丰满人妻一区二区三区免费| 香蕉精品二区二区| 久热伊人| 久久久久久久唑| 国产综合久久久麻桃个| 国产成人五月天丁香花| 91老司机精品| 青青草好吊色| 超碰97护士| 国产 日韩,欧美 自拍| 超碰成人人人爽人人爽| 精品无码久久久久久久杏吧| 日韩在线国产字幕| 91亚洲欧美| www熟女乱伦com| Av手机版天堂网| 欧美亚洲尤物久久| 黄色视频特级毛片| 午夜男人一级A片7777| 大香蕉伊人久久| 欧美精品四区| 夜夜高潮夜夜爽| 九九拍拍精品视频在线播放| 都市激情人妻一区二区青青操视频| 亚洲熟女乱综合一区二区三区| 91欧美性| 亚洲骚逼少妇| 97精品免费| 天天视频网站黄| 精品久久久久av影院| 在线观看精品国产免费| 色婷婷电影网| 国产欧美一区二区| 五十路熟女工口| 九九亚洲色在线观看| 少妇激情一区二区三区视频| 久久精品一区二区三区四区五区| 亚洲人妻中文在线视频| JULIA人妻风俗店中出电影| 国产精品久久久吖| 中文字幕一区二区日韩网| 91成人在线免费视频| 五月天伊人| 九九英色视频| 大屁股熟女一区二区三区| 国产日本顶级一区二区三区| 亚欧色图在线激情| 国产啊v在线免费播放| 午夜男人一级A片7777| 18一区二区三区| 亚洲日韩东京热一区| 亚洲少妇视频| 亚洲āv网址在线观看| 九九探花视频在线观看| 男人的天堂2019AV| 97资源免费视频| 国语精品对白| 中文字幕人成乱码熟女香港| 欧美日韩岛国大片在线观看| 九九久久久久久爱|