青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

炫彩好望角 The Colorful Cape of Good Hope

庸人不必自擾,智者何需千慮?

常用鏈接

統(tǒng)計(jì)

最新評(píng)論

《Beginning Linux Programming》學(xué)習(xí)筆記 03:終端和數(shù)據(jù)管理

第五章《Terminals》和第六章《Managing Text-Based Screens with curses》意義不大,所以只挑揀了一個(gè)典型用例,和同樣內(nèi)容不太多的第七章《數(shù)據(jù)管理》(略去不常用的 dbm 數(shù)據(jù)庫)放在一起。順便把標(biāo)題也改了,畢竟這本書只算入門級(jí)的嘛,看完后要學(xué)的東西還很多的。

termios 結(jié)構(gòu)體

通過與該結(jié)構(gòu)體相關(guān)的函數(shù),例如 int tcgetattr(int fd, struct termios* termios_p)int tcsetattr(int fd, int actions, const struct termios* termios_p),可以改變終端的輸入和輸出行為。該結(jié)構(gòu)體里面有不少五花八門的咚咚,頭都給我看花了,而且很多玩意兒感覺也沒什么用——都 21 世紀(jì)了,還在純字符界面里玩花哨,誰鳥你?去其糟粕之后,也許下面這段控制是否回顯輸入的代碼算是真正有用的功能之一,可用于提示用戶輸入密碼:

        struct termios oldTermios;
        struct termios newTermios;
        int infd = fileno(stdin);

        tcgetattr(infd, &oldTermios);
        newTermios = oldTermios;                             // 創(chuàng)建副本,便于用完后恢復(fù)初始設(shè)置。

        printf("Input password: ");
        newTermios.c_lflag &= ~ECHO;
        tcsetattr(infd, TCSAFLUSH, &newTermios);             // 禁用輸入回顯。

        char* password = NULL;
        size_t n = 0;
        getline(&password, &n, stdin);                       // 屏幕上應(yīng)當(dāng)看不到輸入的字符。

        tcsetattr(infd, TCSANOW, &oldTermios);               // 恢復(fù)初始設(shè)置。
        printf("\nYour password is \"%s\".\n", password);    // 輸出剛才“盲打”的內(nèi)容。
        free(password);
    

管理內(nèi)存

void* malloc(size_t size)void* calloc(size_t number_of_elements, size_t element_size)void* realloc(void* existing_memory, size_t new_size)void free(void* ptr_to_memory) 已經(jīng)風(fēng)騷二十多年了,沒什么特別的,除了下面這種初學(xué)者易犯的錯(cuò)誤:

        p = realloc(p, size * 2);    // 假設(shè)前面沒有創(chuàng)建 p 的副本。
    

realloc 在成功時(shí)返回新內(nèi)存的地址,老內(nèi)存被自動(dòng)釋放;失敗返回 NULL,老內(nèi)存不變!也就是說,如果這句代碼失敗,p 就成了一個(gè)空指針,而原先的內(nèi)存已經(jīng)無法追蹤,從而導(dǎo)致內(nèi)存泄露!

文件鎖

《BLP》講了三種方式,用起來都非常簡(jiǎn)單:

  1. 使用函數(shù) int open(const char* path, int oflags, mode_t mode),并帶上 O_CREATO_EXCL 標(biāo)識(shí),來創(chuàng)建鎖文件。
  2. 使用函數(shù) int fcntl(int fildes, int command, struct flock* flock_structure) 對(duì)文件進(jìn)行局部鎖定。
  3. 使用函數(shù) int lockf(int fildes, int function, off_t size_to_lock) 對(duì)文件進(jìn)行局部鎖定。

這三種方式創(chuàng)建的鎖都屬于“勸告鎖”(Advisory Lock)。勸告鎖僅僅是進(jìn)程間的一種“游戲規(guī)則”,所以只對(duì)按規(guī)則出牌的進(jìn)程起作用。如果有進(jìn)程不按規(guī)矩辦事,通過其他方式直接操作被“鎖住”的文件,內(nèi)核并不會(huì)阻止。勸告鎖需要多個(gè)進(jìn)程的協(xié)作才能生效;在同一個(gè)進(jìn)程中,即使在前面加了鎖,后面的代碼也無法檢測(cè)出來,加鎖操作總是會(huì)成功。勸告鎖很有畫地為牢的感覺……

要想徹底鎖住文件,必須使用“強(qiáng)制鎖”(Mandatory Lock),《BLP》沒有講。上網(wǎng)搜了一下,步驟是:

  1. 使用 -o mand 選項(xiàng)掛載文件系統(tǒng)。強(qiáng)制鎖必須要得到文件系統(tǒng)支持才能生效。
  2. 修改要加鎖的文件的權(quán)限:設(shè)置 SGID 位,并清除組可執(zhí)行位。
  3. 使用 fcntl 對(duì)文件進(jìn)行加鎖或解鎖,步驟和勸告鎖相同。

強(qiáng)制鎖不是 POSIX 兼容的,而且由于 Linux 無法解決某些競(jìng)爭(zhēng)條件,使得它不可靠。詳見 Linux 內(nèi)核文檔“mandatory-locking.txt”,注意其中的第 0 個(gè)問答就是“Why you should avoid mandatory locking”。

posted on 2011-05-10 15:48 蜀山兆孨龘 閱讀(1626) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美伊人久久久久久午夜久久久久| 亚洲免费网站| 一本色道久久综合亚洲精品小说 | 亚洲三级视频| 欧美成人tv| 亚洲国产日韩欧美一区二区三区| 欧美激情一区二区三区全黄| 亚洲黄一区二区| 99亚洲伊人久久精品影院红桃| 一区二区高清在线| 午夜影院日韩| 媚黑女一区二区| 欧美理论电影在线观看| 国产精品午夜久久| 亚洲大胆女人| 亚洲一二三区在线观看| 久久精品二区| 亚洲国产成人av在线| 夜夜爽夜夜爽精品视频| 亚洲视频福利| 久久久久久久国产| 亚洲国产精品一区二区尤物区| 亚洲美女在线视频| 久久福利影视| 欧美日韩mp4| 国模套图日韩精品一区二区| 最新日韩精品| 久久黄色网页| 亚洲精品在线一区二区| 久久国产精品久久国产精品| 欧美成人一区在线| 国产日韩在线不卡| 亚洲视频第一页| 欧美成人免费大片| 亚洲一区在线免费| 欧美激情精品久久久久久| 国产三级精品三级| 正在播放欧美一区| 快播亚洲色图| 一本大道久久a久久精二百| 久久全球大尺度高清视频| 国产精品乱码| 亚洲欧洲精品一区二区| 久久成人精品| 一区二区三区四区国产| 欧美电影免费观看| 在线播放中文字幕一区| 欧美一区二区三区在| 99伊人成综合| 欧美成人按摩| 亚洲电影在线看| 久久精品中文字幕一区| 在线一区欧美| 欧美精品综合| 最近看过的日韩成人| 欧美高清视频免费观看| 久久超碰97中文字幕| 国产伦精品一区二区三区免费迷 | 亚洲欧洲精品一区二区三区不卡 | 一本色道久久综合狠狠躁篇怎么玩 | 日韩网站免费观看| 牛牛国产精品| 欧美一区二区三区免费看| 欧美四级伦理在线| 一区二区三区回区在观看免费视频| 久久一区免费| 久久精品综合| 国外成人在线视频| 久久人体大胆视频| 久久网站热最新地址| 伊甸园精品99久久久久久| 久久久久亚洲综合| 久久蜜桃av一区精品变态类天堂| 精品91免费| 欧美黄色大片网站| 美女爽到呻吟久久久久| 亚洲精品国产视频| 亚洲免费观看| 国产精品网曝门| 欧美一区二区三区的| 亚洲在线观看视频网站| 国产一区三区三区| 欧美成人免费一级人片100| 欧美国产日韩免费| 在线综合亚洲| 欧美一区视频| 激情文学综合丁香| 亚洲国产婷婷香蕉久久久久久99| 欧美日本网站| 午夜精品免费| 久久国产精品久久w女人spa| 亚洲国产日韩欧美在线动漫| 亚洲国产成人久久综合| 欧美精品二区| 久久国产精品久久久久久电车| 久久影视三级福利片| 99视频在线精品国自产拍免费观看| 一区二区久久久久| 激情欧美日韩| 一区二区三区四区在线| 一区二区视频欧美| 亚洲视频精选在线| 国产综合av| 99成人精品| 红桃视频一区| 亚洲一区视频在线| 亚洲另类黄色| 欧美影视一区| 亚洲在线观看免费| 久久先锋影音| 欧美一级久久久久久久大片| 久久一区二区三区国产精品 | 亚洲欧美国产不卡| 美国十次成人| 欧美在线一区二区| 欧美日韩你懂的| 美腿丝袜亚洲色图| 欧美国产日韩a欧美在线观看| 亚洲视频一二| 免费在线看一区| 久久艳片www.17c.com| 国产精品美女主播| 日韩视频一区| 日韩一区二区福利| 欧美大色视频| 国产私拍一区| 亚洲一区尤物| 国产精品99久久久久久久久 | 性色av一区二区三区红粉影视| 亚洲品质自拍| 久久综合亚州| 免费在线视频一区| 国产欧美午夜| 中文国产成人精品久久一| 91久久亚洲| 久久在线免费| 美国十次成人| 伊人影院久久| 久久久久久久久久码影片| 久久成人在线| 国内成+人亚洲+欧美+综合在线| 亚洲午夜精品久久久久久浪潮| 亚洲乱码精品一二三四区日韩在线 | 久久综合九色99| 国语自产精品视频在线看8查询8 | 欧美看片网站| 亚洲娇小video精品| 亚洲精品一区二区三| 玖玖国产精品视频| 亚洲高清免费| av不卡在线观看| 欧美午夜宅男影院在线观看| 日韩一级裸体免费视频| 亚洲午夜在线观看| 国产精品免费看片| 亚洲欧美日韩国产综合精品二区| 久久久国际精品| 亚洲国产99精品国自产| 欧美成人a∨高清免费观看| 欧美成人网在线| 一区二区三区日韩欧美精品| 国产精品jvid在线观看蜜臀 | 老司机67194精品线观看| 影音先锋一区| 欧美精品18+| 亚洲深夜福利视频| 久久久久久久久久久一区| 亚洲国产精品久久久久婷婷老年 | 欧美激情成人在线| 一区二区三区高清| 欧美在线资源| 亚洲精品国产视频| 国产欧美日韩精品丝袜高跟鞋| 欧美主播一区二区三区美女 久久精品人 | 久久国产精品亚洲77777| 在线播放亚洲| 国产精品老牛| 裸体丰满少妇做受久久99精品| 在线亚洲伦理| 亚洲免费高清视频| 国产精品麻豆va在线播放| 久久国产天堂福利天堂| 亚洲理论在线| 久久亚洲私人国产精品va| 一本综合久久| 激情婷婷欧美| 国产精品一区二区三区四区| 美日韩在线观看| 午夜精彩国产免费不卡不顿大片| 欧美成人四级电影| 久久超碰97中文字幕| 99在线精品视频| 伊人久久亚洲热| 国产精品区一区二区三| 欧美日本一区二区三区| 久久综合伊人77777| 亚洲欧美另类中文字幕| 亚洲另类在线视频| 欧美国产专区| 久久亚洲国产精品一区二区|