• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Onway

            我是一只菜菜菜菜鳥...
            posts - 61, comments - 56, trackbacks - 0, articles - 34

            APUE第十六章到第二十一章 筆記

            Posted on 2012-01-13 09:44 Onway 閱讀(470) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 使用說明
            2012-1-1 第十六章 網(wǎng)絡(luò)IPC:套接字
            第一節(jié) 引言

            第二節(jié) 套接字描述符
            1,socket函數(shù)用于創(chuàng)建一個(gè)套接字。
            2,套接字通信是雙向的。函數(shù)shutdown用于禁止套接字的輸入/輸出。
            3,close函數(shù)用于關(guān)閉套接字,釋放網(wǎng)絡(luò)端點(diǎn)。

            第三節(jié) 尋址
            1,大端字節(jié)序:最大字節(jié)地址對(duì)應(yīng)數(shù)字的最低有效字節(jié);小端字節(jié)序則相反。
            2,TCP/IP協(xié)議采用大端字節(jié)序。linux系統(tǒng)為小端字節(jié)序。
            3,四個(gè)函數(shù)用于字節(jié)序的轉(zhuǎn)換:
            htonl,htons,ntohl,ntohs
            h代表host,n代表network,l代表long,s代表short。
            4,套接字地址:(在netinet/in.h中定義)
            a,ipv4:struct sockaddr_in
            b,ipv6: struct sockaddr_in6
            其中IP地址為結(jié)構(gòu)體:
            struct in_addr和struct in6_addr。
            5,通用地址結(jié)構(gòu)struct sockaddr定義在bits/socket.h中(linux)
            6,inet_pton和inet_ntop函數(shù)用于二進(jìn)制格式和點(diǎn)分十進(jìn)制格式的轉(zhuǎn)換。
            7,16.3.3小節(jié)提供了一些用于訪問網(wǎng)絡(luò)數(shù)據(jù)文件的函數(shù)。但不知什么情況下使用。
            8,bind函數(shù)將地址綁定到套接字。
            9,getsockname和getpeername獲得套接字中的地址。

            第四節(jié) 建立連接
            1,connect函數(shù)用于建立連接。
            2,服務(wù)器調(diào)用listen來宣告可以接受連接請(qǐng)求。
            3,accept獲得連接請(qǐng)求并建立連接。
            4,注意connect和accept中套接字的阻塞狀態(tài)。

            第五節(jié) 數(shù)據(jù)傳輸
            1,send函數(shù)與write類似,但是可以指定標(biāo)志來改變處理傳輸數(shù)據(jù)的方式。
            2,sendto函數(shù)允許在無連接的套接字上指定一個(gè)目標(biāo)地址。
            3,sendmsg函數(shù)可以帶有msghdr結(jié)構(gòu)來指定多重緩沖區(qū)傳輸數(shù)據(jù),類似writev函數(shù)。
            4,函數(shù)recv和read類型,但是允許指定選項(xiàng)來控制如何接收數(shù)據(jù)。
            5,如果有興趣定位發(fā)送者,可以使用recvfrom來得到數(shù)據(jù)發(fā)送者的源地址。
            6,為了將接收到的數(shù)據(jù)送入多個(gè)緩沖區(qū),或者想接受輔助數(shù)據(jù),可以使用recvmsg。

            第六節(jié) 套接字選項(xiàng)
            1,套接字機(jī)制提供兩個(gè)套接字選項(xiàng)接口來控制套接字行為。
            2,兩個(gè)接口為:setsockopt和getsockopt。

            第七節(jié) 帶外數(shù)據(jù)
            1,帶外數(shù)據(jù)是一些通訊協(xié)議所支持的可選特征,允許更高優(yōu)先級(jí)的數(shù)據(jù)比普通數(shù)據(jù)優(yōu)先傳輸。
            2,TCP將帶外數(shù)據(jù)稱為“緊急”數(shù)據(jù)。
            3,TCP支持緊急標(biāo)記的概念:在普通數(shù)據(jù)流中緊急數(shù)據(jù)所在的位置。如果采用套接字選項(xiàng)SO_OOBINLINE,那么可以在普通數(shù)據(jù)中接收緊急數(shù)據(jù)。

            第八節(jié) 非阻塞和異步I/O
            1,套接字機(jī)制有自己的方式來處理異步I/O,但是在Single UNIX Specification中沒有標(biāo)準(zhǔn)化。
            2,在基于套接字的異步I/O中,當(dāng)能夠從套接字中讀取數(shù)據(jù),或者套接字寫隊(duì)列中的空間變得可用時(shí),可以安排發(fā)送信號(hào)SIGIO。

            第九節(jié) 小結(jié)

            ps:幾個(gè)晚上就看完了這章,能看懂多少就可想而知了。但其實(shí)在很久前就已經(jīng)非常粗略的看過一下的,當(dāng)時(shí)要用到。非常缺乏實(shí)踐。

            2012-1-5 第十七章 高級(jí)進(jìn)程間通訊
            第一節(jié) 引言

            第二節(jié) 基于STREAMS的管道
            1,s_pipe函數(shù)創(chuàng)建基于STREAMS的全雙工管道。
            2,fattach函數(shù)給STREAMS管道一個(gè)文件系統(tǒng)的名字。
            3,雖然fattach函數(shù)可將任何種類的STREAMS文件描述符與文件系統(tǒng)中的一個(gè)名字相連接,但它最主要用于將一個(gè)名字給予一STREAMS管道。
            4,fdetach函數(shù)撤銷STREAMS管道文件與文件系統(tǒng)中名字的關(guān)聯(lián)關(guān)系。
            5,這節(jié)看不懂啊!!!!!

            第三節(jié) UNIX域套接字
            1,UNIX域套接字用于在同一臺(tái)機(jī)器上運(yùn)行的進(jìn)程之間的通信。雖然因特網(wǎng)域套接字可用于同一目的,但UNIX域套接字的效率更高。
            2,UNIX域套接字僅僅復(fù)制數(shù)據(jù);它們并不執(zhí)行協(xié)議處理,不需要添加或刪除網(wǎng)絡(luò)報(bào)頭,無需計(jì)算檢驗(yàn)和,不要產(chǎn)生順序號(hào),無需發(fā)送確認(rèn)報(bào)文。
            3,為了創(chuàng)建一對(duì)非命名的,相互連接的unix域套接字,可以使用它們面向網(wǎng)絡(luò)的域套接字接口,也可使用socketpair函數(shù)。
            4,UNIX域套接字的地址用sockaddr_un結(jié)構(gòu)表示。
            5,將一個(gè)地址綁定到unix域套接字時(shí),系統(tǒng)用該路徑名創(chuàng)建一類型為S_IFSOCK的文件。

            第四節(jié) 傳送文件描述符
            1,在進(jìn)程間傳送打開的文件描述符可以經(jīng)由STREAMS管道和UNIX域套接字實(shí)現(xiàn)。

            第五節(jié) open服務(wù)器版本1

            第六節(jié) open服務(wù)器版本2

            第七節(jié) 小結(jié)

            ps:基本上這章只看懂了UNIX域套接字一節(jié)。最后四節(jié)飛速翻過。

            2012-1-8 第十八章 終端I/O
            第一節(jié) 引言
            1,POSIX.1在兩種不同處理風(fēng)格的基礎(chǔ)上制定了終端I/O標(biāo)準(zhǔn)。

            第二節(jié) 綜述
            1,終端I/O有兩種不同的工作模式:
            (1)規(guī)范模式輸入處理。在這種模式中,終端輸入以行為單位進(jìn)行處理。對(duì)于每個(gè)讀要求,終端驅(qū)動(dòng)程序最多返回一行。
            (2)非規(guī)范模式輸入處理。輸入字符并不組成行。
            2,終端設(shè)備是由一般位于內(nèi)核中的終端驅(qū)動(dòng)程序控制的。每個(gè)終端設(shè)備有一個(gè)輸入隊(duì)列和一個(gè)輸出隊(duì)列。
            3,大多數(shù)UNIX系統(tǒng)在一個(gè)稱為終端行規(guī)程的模塊中進(jìn)行規(guī)范處理。它是位于內(nèi)核通用讀,寫函數(shù)和實(shí)際設(shè)備驅(qū)動(dòng)程序之間的模塊。
            4,可以檢測(cè)和更改的終端設(shè)備特性都包含在termios結(jié)構(gòu)中。該結(jié)構(gòu)定義在頭文件<termios.h>中。
            5,對(duì)終端設(shè)備進(jìn)程操作的函數(shù)只有13個(gè),其中12個(gè)為POSIX.1指定,1個(gè)為XSI擴(kuò)展。

            第三節(jié) 特殊輸入字符
            1,POSIX.1定義了11個(gè)在輸入時(shí)作特殊處理的字符,其中9個(gè)可以更改為幾乎任意值。不能更改的兩個(gè)特殊字符是換行符和回車符。

            第四節(jié) 獲得和設(shè)置終端屬性
            1,使用函數(shù)tcgetattr和tcsetattr可以獲得或設(shè)置termios結(jié)構(gòu)。

            第五節(jié) 終端選項(xiàng)標(biāo)志

            第六節(jié) stty命令
            1,在命令行(或shell腳本)中可以用stty命令進(jìn)行檢測(cè)和更改終端選項(xiàng)。

            第七節(jié) 波特率函數(shù)
            1,不明白這個(gè)波特率。

            第八節(jié) 行控制函數(shù)
            1,tcdrain函數(shù)等待所有輸出都被發(fā)送。
            2,tcflow用于對(duì)輸入和輸出流控制進(jìn)行控制。
            3,tcflush刷清(拋棄)輸入緩沖區(qū)和輸出緩沖區(qū)。
            4,tcsendbreak函數(shù)在一個(gè)指定的時(shí)間區(qū)間內(nèi)發(fā)送連續(xù)的0位流。

            第九節(jié) 終端標(biāo)識(shí)
            1,ctermid函數(shù)被用來確定控制終端的名字。
            2,在調(diào)用ctermid函數(shù)時(shí),本書說明的所有四種平臺(tái)都返回字符串/dev/tty。
            3,isatty函數(shù)在引用一個(gè)終端設(shè)備時(shí)返回真。
            4,ttyname返回在該文件描述符上打開的終端設(shè)備的名字。

            第十節(jié) 規(guī)范模式
            1,規(guī)范模式:發(fā)一個(gè)讀請(qǐng)求,輸入完一行后,終端驅(qū)動(dòng)程序即返回。
            2,下列幾個(gè)條件都會(huì)造成讀返回:
            (1)所要求的字節(jié)數(shù)已讀到時(shí),讀返回。
            (2)當(dāng)讀到一個(gè)行定界符時(shí),讀返回。
            (3)如果捕捉到一個(gè)信號(hào)并且該函數(shù)不會(huì)自動(dòng)重啟,則讀返回。

            第十一節(jié) 非規(guī)范模式
            1,關(guān)閉termios結(jié)構(gòu)中c_lflag字段的ICANON標(biāo)志就使終端處于非規(guī)范模式。
            2,輸入讀取方式為:當(dāng)讀了指定量的數(shù)據(jù)后,或者已經(jīng)過了給定的時(shí)間后,即通知系統(tǒng)返回。這種技術(shù)使用了termios結(jié)構(gòu)中c_cc數(shù)組的兩個(gè)變量:MIN和TIME。

            第十二節(jié) 終端的窗口大小
            1,內(nèi)核為每個(gè)終端和偽終端保存一個(gè)winsize結(jié)構(gòu)。
            2,用ioctl的TIOCGWINSZ命令可以取此結(jié)構(gòu)的當(dāng)前值。
            3,用ioctl的TIOCSWINSZ命令可以講此結(jié)構(gòu)的新值放到內(nèi)核中,如果新值與當(dāng)前值不同,則向前臺(tái)進(jìn)程組發(fā)送SIGWINCH信號(hào)(默認(rèn)為忽略)。
            4,提供這種功能的目的是,當(dāng)窗口大小發(fā)生變化時(shí)通知應(yīng)用程序(如VI)。應(yīng)用程序接到此信號(hào)后,可取窗口大小的新值,然后重繪屏幕。

            第十三節(jié) termcap,terminfo和curses
            1,termcap的意思是終端能力,它指的是文本文件/etc/termcap和一套讀此文件的例程。這種技術(shù)是在伯克利發(fā)展起來的,主要是為了支持vi編輯器。termcap文件包含了對(duì)各種終端的說明。
            2,termcap這種技術(shù)不是很完善,其缺陷導(dǎo)致開發(fā)另一種新版本:terminfo和其相關(guān)的curses庫。
            3,不論是termcap還是terminfo,它們所提供只是在各種終端上執(zhí)行一般性操作的方法。
            4,curses是為字符終端設(shè)計(jì)的,而現(xiàn)在字符終端大部分已被以像素為基礎(chǔ)的圖形終端所替代。

            第十四節(jié) 小結(jié)

            ps:連文中提到的文件是否存在這么簡(jiǎn)單的事都懶得去驗(yàn)證了。還是那句,先看個(gè)概念吧。

            2012-1-12 第十九章 偽終端
            第一節(jié) 引言

            第二節(jié) 概述
            1,偽終端的某些典型應(yīng)用:
            (1)網(wǎng)絡(luò)登錄服務(wù)器
            (2)script程序
            (3)expect程序
            (4)運(yùn)行協(xié)同進(jìn)程
            (5)觀看長(zhǎng)時(shí)間運(yùn)行程序的輸出

            第三節(jié) 打開偽終端設(shè)備
            1,posix_openpt用來打開下一個(gè)可用的偽終端主設(shè)備。
            2,在偽終端從設(shè)備可用之前,使用grantpt函數(shù)設(shè)置它的權(quán)限。
            3,unlockpt函數(shù)用于準(zhǔn)予對(duì)偽終端從設(shè)備的訪問,從而允許應(yīng)用程序打開該設(shè)備。
            4,在grantpt哈unlockpt這兩個(gè)函數(shù)中,文件描述符參數(shù)是與主偽終端設(shè)備關(guān)聯(lián)的文件描述符。
            5,ptsname函數(shù)用于在給定主偽終端設(shè)備的文件描述符時(shí),找到從偽終端設(shè)備的路徑名。
            6,ptym_open打開下一個(gè)可用的PTY設(shè)備,ptys_open打開相應(yīng)的從設(shè)備。但通常不直接調(diào)用這兩個(gè)函數(shù),而由pty_fork調(diào)用。

            ps:這一章看不下去了。

            2012-1-11 第二十章 數(shù)據(jù)庫函數(shù)庫
            第一節(jié) 引言

            第二節(jié) 歷史
            1,dbm(3)是在unix系統(tǒng)中很流行的數(shù)據(jù)庫函數(shù)庫,它由Ken Thompson開發(fā),使用了動(dòng)態(tài)散列結(jié)構(gòu)。
            2,BSD的開發(fā)者擴(kuò)充了dbm函數(shù)庫,并將它稱為ndbm。ndbm函數(shù)被標(biāo)準(zhǔn)化后成為Single UNIX Specification的XSI擴(kuò)展部分。
            3,dbm函數(shù)的GNU版本是gdbm。
            4,以上函數(shù)庫的實(shí)現(xiàn)都有一個(gè)根本的缺點(diǎn)是:都不支持多個(gè)進(jìn)程對(duì)數(shù)據(jù)庫的并發(fā)更新,都沒有提供并發(fā)控制。
            5,4.4BSD提供了一個(gè)新的庫db(3),支持面向記錄,散列和B-樹三種訪問模式。但是也沒有提供并發(fā)控制。
            6,在linux上,gdbm即支持dbm函數(shù)庫,又支持ndbm函數(shù)庫。

            第三節(jié)-第十節(jié)

            2012-1-12  第二十一章 與網(wǎng)絡(luò)打印機(jī)通訊
            第一節(jié) 引言

            第二節(jié) 網(wǎng)絡(luò)打印協(xié)議
            1,網(wǎng)絡(luò)打印協(xié)議IPP建立在超文本傳輸協(xié)議(HTTP)之上。
            2,所有的UNIX系統(tǒng)至少提供一個(gè)打印假脫系統(tǒng),在linux和mac os x上為CUPS——Common UNIX Printing System。
            3,打印配置文件是/etc/printer.conf。該文件表示了運(yùn)行打印假脫機(jī)守護(hù)進(jìn)程的服務(wù)器主機(jī)名字和網(wǎng)絡(luò)打印機(jī)的主機(jī)名字。

            第三節(jié)-第六節(jié)

            ps:全書算是瀏覽了一遍吧。STREAMS相關(guān)內(nèi)容和偽終端真是沒看懂。從十一月份斷電以來到現(xiàn)在這個(gè)學(xué)期的最后一天,每個(gè)晚上翻幾頁,總算將書翻完了。2012-1-13。
            国产无套内射久久久国产| 国内精品人妻无码久久久影院导航| 国产精品久久久久久搜索| 91精品国产高清久久久久久io| 久久久青草久久久青草| 一本色综合久久| 国产午夜久久影院| 2021久久精品国产99国产精品| 亚洲国产精品无码久久| 国产精品久久自在自线观看| 久久精品无码av| 精品国产VA久久久久久久冰| 久久精品一区二区三区中文字幕| 久久一日本道色综合久久| 久久99久久成人免费播放| 国内精品久久久久影院日本| 久久久久久青草大香综合精品| 国内精品伊人久久久久av一坑 | 91麻豆精品国产91久久久久久| 麻豆久久久9性大片| 久久精品无码一区二区日韩AV| 99国产欧美久久久精品蜜芽| 久久无码国产专区精品| 人妻少妇精品久久| 久久久久久久综合日本| 国产精品欧美亚洲韩国日本久久| 国产精品免费看久久久| 国产69精品久久久久久人妻精品| 深夜久久AAAAA级毛片免费看| 66精品综合久久久久久久| 国产成人久久精品一区二区三区| 日韩人妻无码一区二区三区久久| 香蕉久久影院| 精品久久久久久久久免费影院| 久久亚洲高清综合| 久久久久香蕉视频| 久久久久久青草大香综合精品| 亚洲国产天堂久久久久久| 久久亚洲精品无码播放| 久久国产AVJUST麻豆| 精品伊人久久大线蕉色首页|