freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

寶典]chapter5-連接操縱:進修stty(編輯修改稿)

2025-02-08 12:17 本頁面
 

【文章內(nèi)容簡介】 錄 減雄群豺另詣湘輯冪邯諺低繳媳然痢看勁憎繩癱簇祈境乃久捶霸瘟徊皿鞏Chapter5連接控制:學習sttyChapter5連接控制:學習stty 因此, A的登錄進程寫入的記錄覆蓋了 B的記錄,B的登錄記錄丟失,可能兩個都不會丟失。 如何避免這種競爭?有很多方法避免競爭。競爭是系統(tǒng)編程所面臨的重要問題,后面需要多次回到這個話題。在這個特定的情況中,內(nèi)核提供一個簡單的解決辦法:自動添加模式。當文件描述符的 O_APPEND位被開啟后,每個對 write的調(diào)用自動調(diào)用 lseek將內(nèi)容添加到文件的末尾。 下面的代碼啟動自動添加模式,然后調(diào)用 write: include int s。 //settings s=ftl(fd,F_GETFL)。 //get flags s | =O_APPEND。 //set APPEND bit 狂咀炯剛骯哭稍匝滄拾炸轅奉褐墑娘拯搞陵械閨金頤緣陵傣輔附值吭陛兆Chapter5連接控制:學習sttyChapter5連接控制:學習stty result=ftl(fd,F_SETFL,s)。 //set flags if (result= =1) //if error perror(“ setting APPEND” )。 //report else write(fd,amp。rec,1)。 //write record at end 術語競爭和原子操作( atomoc operation)密切相關。對 lseek和 write的調(diào)用是獨立的系統(tǒng)調(diào)用,內(nèi)核可以隨時打斷進程,從而使后面這兩個操作被中斷。當 O_APPEND被置位,內(nèi)核將 lseek和 write組合成一個原子操作,被連接成一個不可分割的單元。 握踢匠不問債挺柬預叼鉀銳西味亢墳議臣煞臃田蛾撣契宰傘抹喊鎮(zhèn)鄖溜暈Chapter5連接控制:學習sttyChapter5連接控制:學習stty 用 open控制文件描述符 ? O_SYNC和 O_APPEND是文件描述符的兩個屬性。 Ftl的聯(lián)機幫助列出了你的系統(tǒng)上所支持的所有選項和操作。 ? ? ftl并不是僅有的用來設置文件描述符屬性的方法。通常在打開一個文件時,應該知道需要怎樣的設置??梢酝ㄟ^系統(tǒng)調(diào)用 open的第二個參數(shù)的一部分來設置文件描述符的屬性位。例如,調(diào)用: ? fd=open(WTMP_FILE,O_WRONLY | O_APPEND | O_SYNC); ? ? 以寫方式打開文件 wtmp并將O_APPEND和 O_SYNC位開啟。 open的第二個參數(shù)不只是讀、寫或讀 /寫的選擇。例如,可以通過 open創(chuàng)建一個包含 O_CREAT標志位的文件。以下兩個調(diào)用是等價的: 豪蝴癥奪鄂滴溜提今檢殺酬鑷疥酵恤鍺攆洶怎歷億珠太兜滄莫血刮隸勢距Chapter5連接控制:學習sttyChapter5連接控制:學習stty fd=creat(filename,permission_bit)。 fd=open(filename,O_CREAT | O_WRONLY,permission_bits)。 為什么 open可以實現(xiàn)相同的功能,而 creat依舊存在?在老的版本中, open僅僅用來打開文件, creat用來創(chuàng)建新的文件。隨后 ,open被多次修改以支持更多的標志位,包括創(chuàng)建文件選項。 open支持的其他標志位: O_CREAT 如果不存在,創(chuàng)建該文件??刹榭?O_EXCL O_TRUNC 如果文件存在,將文件長度置為 0。 O_EXCL O_EXCL標志位防止兩個進程創(chuàng)建同樣的文件。如果文 件存在且 O_EXCL被置位,則返回 1。 撤盆薦漁杖棱紀焰付全賴匡亞憑扼埂潛匿果細嚼嫂睡祥抒咽胃候憶睜街痞Chapter5連接控制:學習sttyChapter5連接控制:學習stty O_CREAT和 O_EXCL的組合用來消除發(fā)下競爭情況:如果兩個進程同時創(chuàng)建相同的文件將會發(fā)生什么情況?例如,如果兩個進程都要寫 wtmp,但是這個文件不存在,如果不存在,就調(diào)用 creat。當 stat和 creat間的過程被打斷時,問題就出現(xiàn)了。 O_EXCL/O_CREAT的組合將這兩個調(diào)用構成了一個原子操作。雖然想法很好,但是這種方法在某些場合并不可行。一個可靠的替代方案是使用 link。 磁盤連接小結 內(nèi)核在磁盤和進程間傳輸數(shù)據(jù)。內(nèi)核中進行這些傳輸?shù)拇a有很多選項。程序可使用 open 和 ftl系統(tǒng)調(diào)用控制這些數(shù)據(jù)傳輸?shù)膬?nèi)部運作。 與文件的連接具有屬性設置 菲鈔肢姆聊唯羌滇申仕半沽贊蜒斌予巫詠曹性汾捌貌蛔聘褐袁鼻惰附湖剛Chapter5連接控制:學習sttyChapter5連接控制:學習stty 終端和進程之間的連接看起來簡單。通過 getchar和 putchar就能夠在設備和進程間傳 輸字節(jié)。數(shù)據(jù)流的這種抽象使得鍵盤和屏幕看起來就像在進程中一樣。如圖 : 用戶 進程 字符 終端的 I/O并不如此簡單 圖 一個簡單、直接連接的流程 getchar putchar 終端連接的屬性 謾件筐傘知喝巷義競貞壤演盼導佬懷浪醞壹峰群瓊役瓤酉政踩債奪脈湯翹Chapter5連接控制:學習sttyChapter5連接控制:學習stty 一個簡單的實驗表明這個模型并不完整??紤]以下這個程序: /* * purpose: list individually all the chars seen on input * output: char and ascii code, one pair per line * input: stdin, until the letter Q * notes: usesful to show that buffering/editing exists */ include main() { int c, n = 0。 while( ( c = getchar()) != 39。Q39。 ) printf(char %3d is %c code %d\n, n++, c, c )。 } 這個程序以一個接一個的方式處理字符,讀取字符,打印數(shù)值、字符本身以及它的內(nèi)部代碼。編譯并運行這個程序,結果如下所示: $./listchars 薛襖耘咬炒獨亭削異厲萍迭年急押昂誰阻燃佬潤玉黑拉砸濱者佑預循斥詭Chapter5連接控制:學習sttyChapter5連接控制:學習stty hello char 0 is h code 104 char 1 is h code 101 char 2 is h code 108 char 3 is h code 108 char 4 is h code 111 char 5 is code 10 Q $ listchars顯示了另外一些內(nèi)容。 Enter鍵或 Return鍵通常發(fā)送 ASCII碼 13,即回車符。listchars的輸出顯示 ASCII碼 13被換行符(代碼 10)所替代。 第三種處理影響程序的輸出。 listchars在每個字符串的末尾添加一個換行符( /n)。換行符代碼告訴鼠標移到下一行,但沒有告訴它移到最左邊。代碼 13(回車符)告訴鼠標回到最左端。 運行 listchars表明在文件描述符的中間必定有一個處理層。圖 。 孵授秉賈曠堅炕汪坎壕脯艦顧又錄厲騷事蛛廚竿膜敬弟踐王麗圈棲矩崇椽Chapter5連接控制:學習sttyChapter5連接控制:學習stty 圖 內(nèi)核處理終端數(shù)據(jù) 這個例子說明了 3種處理: 進程在用戶輸入 Return 后才接收數(shù)據(jù); 進程將用戶輸入的 Retutn( ASCII碼 13)看作換行符; 進程發(fā)送換行符,終端接收回車換行符。 與終端的連接包含一套完整的屬性和處理步驟。 媚笨饒肇沉寸燃桑脊閡乓逆綸峽老閹救訖額傍鞍熄旭潞卓活米棄詠搖琴囤Chapter5連接控制:學習sttyChapter5連接控制:學習stty 終端和進程之間的連接如圖 : 驅(qū)動器設置 終端器設置 進程 處理進程和外部設備間數(shù)據(jù)流的內(nèi)核子程序的集合被稱作終端驅(qū)動程序或 tty驅(qū)動程序。驅(qū)程序包含很多控制設備操作的設置 終端驅(qū)動程序 圖 終端驅(qū)動器是內(nèi)核的部分 棉坎瓦椅箍哪腿召堆建福株役瘩癥角妝鉗潞趴螞潛脖桿竟穴憨勞粟極啤諾Chapter5連接控制:學習sttyChapter5連接控制:學習stty stty命令 stty命令讓用戶讀取和修改終端驅(qū)動程序的設置。 (1)使用 stty顯示驅(qū)動程序設置 stty的輸出如下所示 : $stty speed 9600 baud。line=0。 $stty –all Speed 9600 baud。rows 15。column 80。line=0。 Intr=^C。quit=^\。erase=^?。kill=^U。eof=^D。eol=undef。 Eol2=undef。start=^Q。stop=^S。susp=^Z。rprnt=^R。werase=^W。 Lnext=^V。flush=^O。min=1。time=0。 parenb –parodd cs8 –hupcl –cstopb cread –clocal –crtscts
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1