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

炫彩好望角 The Colorful Cape of Good Hope

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

常用鏈接

統計

最新評論

Linux 編程學習筆記 02——Linux 環境

上次忘了說,我的學習順序是按照《Beginning Linux Programming, 4th Edition》(以后簡稱《BLP》)這本書來的,同時參照官方文檔《The GNU C Library Reference Manual》(以后簡稱《GLIBC》)和 man。這次是第四章《The Linux Environment》的學習筆記。

程序參數

沒什么特別,主要是 int getopt(int argc, char** argv, const char* options)int getopt_long(int argc, char* const* argv, const char* shortopts, const struct option* longopts, int* indexptr) 這兩個用于解析命令行參數的使用。只要按照規范定義參數,就可以很方便地進行解析。怎么 Java 就沒有提供類似的方法呢?

環境變量

要設置一個環境變量,《BLP》只講了 int putenv(char* string) 函數。根據《GLIBC》和 man 的描述,調用此函數后,string 就變成了環境的一部分,對它所做的任何更改,不論對鍵還是對值,都將自動反映到環境中,這就要求 string 的生命周期不能在該環境變量被刪除之前結束,否則可能出錯。例如:

        char env[] = "a=b";
        putenv(env);
        printf("%s\n", getenv("a"));       // 輸出“b”。

        env[2] = 'z';
        printf("%s\n", getenv("a"));       // 輸出“z”。

        env[0] = 'x';
        // printf("%s\n", getenv("a"));    // 程序崩潰……
        printf("%s\n", getenv("x"));       // 輸出“z”。
    

從《GLIBC》可以查到另兩個用起來更為安全可靠的函數: int setenv(const char* name, const char* value, int replace)int unsetenv(const char* name)

可通過 extern char** environ 遍歷所有的環境變量,但是最好不要直接使用此變量進行迭代,而是創建一個副本,可避免影響程序的其他部分。

時間和日期

《BLP》只講了精確到秒的 time_t time(time_t* tloc)。《GLIBC》指出 sys/time.h 中聲明了用來獲取更高精度的結構體 timeval 和函數 int gettimeofday(struct timeval* tp, struct timezone* tzp)timeval 定義了表示整秒數的成員 tv_sec 和表示剩余毫微秒數的成員 tv_usec,其中 tv_usec 不超過一百萬,所以兩者加起來就是實際的時間。由于 timezone 結構體已被廢棄,而且不再被 GNU 支持,所以 gettimeofday 的第二個參數只能設為 NULL,否則 errno 會被置為 ENOSYS(Function not implemented)。例如:

        time_t now = time(NULL);
        struct timeval tvnow;
        gettimeofday(&tvnow, NULL);

        printf("%jd\n", (intmax_t) now);       // 輸出“1304649729”。
        printf("%jd.%06ju\n", (intmax_t) tvnow.tv_sec,
                (uintmax_t) tvnow.tv_usec);    // 輸出“1304649729.644344”。
    

臨時文件

最好不要先使用 char* tmpnam(char* s)char* mktemp(char* template) 生成“隨機”字符串,再創建相應文件,因為在創建文件前,有可能其他程序也生成了相同的字符串,從而導致沖突。應當使用 FILE* tmpfile(void)int mkstemp(char* template) 直接生成文件——前者的好處所創建的臨時文件在關閉時會被自動刪除,但卻無法取得文件名;后者能得到文件名,但必須手動刪除。

用戶信息

在我的 Debian 上,char* getlogin(void) 不能正確工作,errno 給出的原因是“No such file or directory”。具體哪個文件沒找到沒搞清楚,不過 man 已經指出此函數不安全,不用為妙。通過 uid_t getuid(void)struct passwd* getpwuid(uid_t uid) 可以得到當前用戶的詳細信息。

主機信息

掌握 int uname(struct utsname* name) 就差不多了。

日志記錄

遺憾的是,Linux 本身只提供了寫入系統日志的函數,而沒有類似 java.util.Logger 那種通用接口。

資源和限制

除了偶爾測試一下算法的性能,也許只有專業性能分析工具才用得上這些東西吧。

posted on 2011-05-06 11:06 蜀山兆孨龘 閱讀(1960) 評論(2)  編輯 收藏 引用 所屬分類: Linux

評論

# re: Linux 編程學習筆記 02——Linux 環境 2011-05-06 12:59 wales

關於syslog可以看看syslog-ng的資料  回復  更多評論   

# re: Linux 編程學習筆記 02——Linux 環境 2011-05-12 13:35 mbt scarpe

I see that you are using Wordpress on your blog, wordpress is the best.  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            9国产精品视频| 99av国产精品欲麻豆| 午夜精品久久久久久久男人的天堂| 欧美激情视频网站| 亚洲电影观看| 欧美国产日韩二区| 91久久精品国产91久久性色tv| 亚洲激情第一页| 99视频有精品| 欧美一区二区三区免费视频| 久久精品人人爽| 欧美1区免费| 欧美视频一二三区| 国产在线精品成人一区二区三区| 极品裸体白嫩激情啪啪国产精品| 今天的高清视频免费播放成人| 有坂深雪在线一区| 一本大道久久精品懂色aⅴ| 香蕉成人久久| 牛牛国产精品| 国产日韩欧美制服另类| 亚洲午夜在线观看| 久久精品成人一区二区三区蜜臀| 美女精品自拍一二三四| 欧美午夜片欧美片在线观看| 韩国精品久久久999| 国产精品99久久久久久久久久久久| 欧美一区二区| 亚洲欧洲精品一区二区| 小辣椒精品导航| 欧美精品亚洲一区二区在线播放| 国产欧美一区二区视频| 亚洲激情在线观看| 欧美主播一区二区三区| 亚洲二区免费| 久久国产精品一区二区| 欧美午夜美女看片| 日韩网站免费观看| 女同一区二区| 亚洲你懂的在线视频| 女女同性精品视频| 激情视频一区二区三区| 性色av香蕉一区二区| 亚洲人成在线观看| 久久久另类综合| 国产精品爽黄69| 99国产麻豆精品| 亚洲第一福利视频| 久久免费高清| 国产综合18久久久久久| 香蕉成人久久| 亚洲小说欧美另类婷婷| 欧美午夜视频网站| 亚洲一区二区三区涩| 亚洲开发第一视频在线播放| 欧美jizz19hd性欧美| 亚洲高清在线观看一区| 久久亚洲综合色一区二区三区| 午夜在线精品偷拍| 国产私拍一区| 六月丁香综合| 另类激情亚洲| 亚洲乱码一区二区| 日韩一二在线观看| 国产精品亚洲激情| 久久精品综合一区| 久久精品亚洲热| 亚洲电影毛片| 91久久久国产精品| 欧美三级日本三级少妇99| 中文高清一区| 亚洲淫性视频| 国产在线视频不卡二| 久久久精品久久久久| 久久精品亚洲乱码伦伦中文| 亚洲国产精品一区二区久 | 欧美激情成人在线| 亚洲精品一区二区三区在线观看| 一区二区三区四区精品| 日韩一级免费观看| 性色一区二区| 亚洲网站在线播放| 国产精品午夜在线| 久久久夜夜夜| 欧美精品国产一区| 亚洲欧美日韩在线一区| 午夜精品理论片| 在线不卡免费欧美| 亚洲精品九九| 国产模特精品视频久久久久| 久久一区二区三区四区五区| 欧美大片一区二区三区| 国产精品99久久99久久久二8| 亚洲一区在线观看免费观看电影高清| 国产日韩欧美精品综合| 亚洲国产99| 国产精品亚洲欧美| 牛人盗摄一区二区三区视频| 欧美日韩国产在线一区| 久久成人18免费网站| 欧美成人国产一区二区| 午夜久久久久久| 欧美wwwwww| 欧美怡红院视频一区二区三区| 久久亚洲风情| 香蕉久久精品日日躁夜夜躁| 久久在线免费| 欧美亚洲免费高清在线观看| 欧美v国产在线一区二区三区| 亚洲一区二区三区四区视频| 久久中文在线| 久久久久久欧美| 国产精品视频午夜| 亚洲日本视频| 亚洲二区免费| 久久国产乱子精品免费女| 亚洲一级在线| 欧美精品亚洲一区二区在线播放| 久久日韩粉嫩一区二区三区| 国产精品成人免费视频 | 国产一区二区| 99爱精品视频| 亚洲精品中文在线| 久久视频免费观看| 久久精品国产精品亚洲| 欧美三区在线视频| 亚洲美女精品成人在线视频| 亚洲国产美女| 另类春色校园亚洲| 欧美成人一区二区三区在线观看| 国语自产精品视频在线看抢先版结局| 在线亚洲+欧美+日本专区| 一区二区三区日韩精品视频| 美女日韩欧美| 欧美成人一区二区三区片免费| 精品成人一区二区三区| 性欧美大战久久久久久久久| 午夜久久一区| 国产一区自拍视频| 欧美在线观看视频在线| 国产精品极品美女粉嫩高清在线| 亚洲精品日日夜夜| 日韩视频在线观看国产| 欧美高清视频一区二区三区在线观看| 欧美sm极限捆绑bd| 亚洲人成亚洲人成在线观看图片| 乱中年女人伦av一区二区| 欧美xxx在线观看| 亚洲激情一区| 欧美日韩亚洲三区| 亚洲一区二区在线| 久久激五月天综合精品| 黄色成人在线免费| 猛干欧美女孩| 91久久国产综合久久91精品网站| 在线中文字幕一区| 国产日产欧美一区| 久久综合电影| 一区二区高清视频| 久久精品亚洲| 亚洲精选国产| 国产伦精品一区二区三区照片91| 久久gogo国模裸体人体| 亚洲成色777777在线观看影院| 日韩手机在线导航| 国产精品系列在线播放| 久久精品1区| 亚洲精品亚洲人成人网| 久久精品中文| 在线视频欧美日韩| 国产亚洲欧美激情| 鲁鲁狠狠狠7777一区二区| 亚洲深夜福利网站| 免费看的黄色欧美网站| 亚洲无线一线二线三线区别av| 国产精品一级二级三级| 老司机精品视频一区二区三区| 亚洲免费观看视频| 久久久久久久国产| 正在播放欧美一区| 国产一区激情| 国产精品二区在线| 免费久久99精品国产自| 亚洲无吗在线| 亚洲国产高清aⅴ视频| 欧美亚洲一区| 99精品欧美一区二区三区综合在线| 国产亚洲精品成人av久久ww| 欧美日韩国产三级| 美女亚洲精品| 欧美在线亚洲| 99精品热视频只有精品10| 欧美电影电视剧在线观看| 欧美一区在线视频| 亚洲视频1区2区| 日韩视频在线一区二区| 在线观看欧美精品| 国产婷婷97碰碰久久人人蜜臀| 欧美性大战久久久久久久蜜臀| 欧美成人黄色小视频|