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

炫彩好望角 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 蜀山兆孨龘 閱讀(1965) 評論(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>
            久久婷婷色综合| 女女同性女同一区二区三区91| 欧美日韩小视频| 男女视频一区二区| 麻豆成人在线播放| 麻豆精品在线观看| 欧美精品高清视频| 国产精品成人在线观看| 国产精品美女视频网站| 国产精品中文字幕欧美| 红桃视频一区| 亚洲每日更新| 亚洲欧美国产不卡| 久久久久久久精| 亚洲国产一区二区在线| 99riav国产精品| 午夜国产不卡在线观看视频| 久久久久亚洲综合| 欧美日韩国产首页| 国产一区二区三区精品久久久| 亚洲电影免费观看高清完整版| 亚洲高清av| 亚洲一区日本| 麻豆国产精品va在线观看不卡| 亚洲春色另类小说| 一区二区免费在线播放| 欧美在线视频一区二区| 美日韩精品视频免费看| 国产精品伦理| 日韩一级二级三级| 久久精品1区| 99一区二区| 欧美14一18处毛片| 国产亚洲欧洲一区高清在线观看| 亚洲精品国产日韩| 久久久久国产精品一区二区| 亚洲三级电影在线观看| 久久国产精品久久久久久久久久 | 亚洲乱码国产乱码精品精可以看| 亚洲少妇在线| 欧美国产激情| 在线不卡中文字幕播放| 午夜一区不卡| 亚洲看片免费| 欧美www视频在线观看| 国外视频精品毛片| 性欧美videos另类喷潮| 在线亚洲精品福利网址导航| 欧美激情偷拍| 亚洲日本一区二区三区| 欧美福利视频在线| 久久久国产午夜精品| 国产麻豆精品视频| 国产精品一区免费观看| 亚洲免费电影在线| 欧美黄色片免费观看| 久久国产欧美日韩精品| 国产亚洲精久久久久久| 欧美一区二区精品在线| 亚洲视频在线看| 国产精品国色综合久久| 亚洲一区美女视频在线观看免费| 亚洲激情午夜| 欧美国产先锋| aⅴ色国产欧美| 亚洲精品中文字幕女同| 欧美日韩国产一级片| 夜夜嗨av一区二区三区网站四季av| 亚洲国产成人在线| 欧美精品免费看| 一区二区三区视频在线| 亚洲精选在线| 欧美日韩国产成人在线观看| 亚洲色图综合久久| 亚洲一区三区视频在线观看| 国产美女一区二区| 久久久久久久一区| 美日韩丰满少妇在线观看| 99re8这里有精品热视频免费| 亚洲人成亚洲人成在线观看| 欧美无乱码久久久免费午夜一区| 亚洲专区一区| 久久精品视频亚洲| 亚洲三级免费| 在线亚洲欧美| 国产一二精品视频| 欧美成人免费全部| 欧美日韩性生活视频| 午夜在线一区二区| 美女视频黄 久久| 在线视频免费在线观看一区二区| 夜夜嗨av一区二区三区四区| 国产模特精品视频久久久久| 欧美成人免费全部| 国产精品成人午夜| 狼人社综合社区| 欧美日韩亚洲一区三区| 久久久久久精| 欧美日韩卡一卡二| 蜜桃视频一区| 国产精品久久国产三级国电话系列 | 亚洲小说欧美另类社区| 欧美亚洲三区| 正在播放欧美一区| 欧美一区视频在线| aa成人免费视频| 久久精品最新地址| 在线视频你懂得一区| 久久久人成影片一区二区三区观看 | 久久精品国产第一区二区三区最新章节 | 亚洲国产高清aⅴ视频| 日韩视频在线免费| 亚洲国产第一页| 亚洲欧美激情在线视频| 亚洲美女中文字幕| 欧美在线首页| 亚洲欧美日韩国产中文| 欧美好骚综合网| 另类专区欧美制服同性| 国产精品一区二区a| 亚洲日韩中文字幕在线播放| 在线观看欧美日本| 欧美一区高清| 欧美一区二区三区四区在线 | 国产日韩欧美不卡| 亚洲日本一区二区三区| 亚洲电影观看| 久久综合中文字幕| 美女精品视频一区| 狠狠噜噜久久| 久久精品二区亚洲w码| 欧美一级黄色网| 国产精品成人一区二区网站软件 | 欧美日韩精品免费在线观看视频| 免费精品视频| 韩国av一区二区| 午夜在线视频一区二区区别 | 中文av一区二区| 一区二区三区四区精品| 欧美国产成人精品| 91久久国产综合久久91精品网站| 亚洲福利视频在线| 免费成人av在线| 亚洲国产精彩中文乱码av在线播放| 一区二区三区中文在线观看| 久久久精品日韩欧美| 欧美1区视频| 亚洲国产精品久久人人爱蜜臀 | 亚洲小视频在线| 亚洲永久在线观看| 国产精品久久久久久久app| 在线视频精品一区| 午夜精品成人在线| 国产色综合网| 久久久在线视频| 亚洲国产99精品国自产| 一本大道久久a久久精二百| 欧美三区在线视频| 亚洲女与黑人做爰| 美女精品一区| 正在播放亚洲| 久久国产精品免费一区| 美女视频网站黄色亚洲| 亚洲精品一区二区三区在线观看 | 久久久综合激的五月天| 亚洲欧洲一区二区三区久久| 亚洲无亚洲人成网站77777| 国产欧美在线| 久久午夜av| 99精品国产在热久久下载| 午夜亚洲一区| 亚洲欧洲精品天堂一级| 国产精品jizz在线观看美国| 欧美在线视频日韩| 亚洲精品一区二区三区四区高清| 西瓜成人精品人成网站| 亚洲黄色免费网站| 国产精品日韩精品欧美精品| 老司机免费视频一区二区三区| 亚洲日产国产精品| 久久精品噜噜噜成人av农村| 亚洲日本成人女熟在线观看| 欧美视频日韩| 久久精品夜色噜噜亚洲aⅴ| 一本色道久久88精品综合| 久久在线免费观看| 午夜久久久久久| 亚洲精品一二区| 狠狠色狠狠色综合日日五| 欧美另类视频| 免费观看在线综合| 欧美专区在线| 亚洲综合导航| 99精品欧美一区二区三区| 免费观看久久久4p| 久久久www成人免费无遮挡大片| 亚洲一区二区精品| 日韩视频在线免费| 最新日韩在线视频| 亚洲福利一区|