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

炫彩好望角 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久久一区二区| 日韩亚洲欧美一区二区三区| 一本大道av伊人久久综合| 亚洲黄色免费| 一区二区高清在线观看| 欧美一区二区播放| 久久久久在线观看| 亚洲国产视频一区二区| 亚洲一级免费视频| 久久综合伊人77777| 国产精品扒开腿爽爽爽视频 | 久久久久久久波多野高潮日日| 久久美女性网| 国产女主播一区| 中文精品视频一区二区在线观看| 午夜久久美女| 99精品国产在热久久婷婷| 久久人人97超碰国产公开结果| 亚洲欧美日韩国产一区| 亚洲第一区在线观看| 欧美在线观看一区| 国产日韩欧美三级| 欧美一区二区私人影院日本 | 欧美在线精品免播放器视频| 欧美激情免费观看| 老司机成人在线视频| 亚洲二区视频在线| 亚洲大片在线| 欧美成人一区二区三区片免费| 狠狠入ady亚洲精品| 欧美一区午夜精品| 午夜亚洲福利| 在线观看一区二区视频| 国产字幕视频一区二区| 亚洲欧美日韩中文在线制服| 一区二区三区久久精品| 欧美午夜精品理论片a级按摩| 中国成人亚色综合网站| 一区二区三区毛片| 影音先锋亚洲视频| 亚洲美女在线观看| 国产日韩精品一区二区三区| 母乳一区在线观看| 欧美激情日韩| 久久夜色精品一区| 国产精品久久久久7777婷婷| 久久一区视频| 国产综合激情| 亚洲一区二区三区在线视频| 黄色另类av| 亚洲欧美日韩精品久久亚洲区| 9人人澡人人爽人人精品| 久久国产精品亚洲77777| 性亚洲最疯狂xxxx高清| 欧美激情亚洲国产| 欧美日韩国产成人精品| 亚洲国产日韩欧美在线图片| 国产欧美一二三区| 亚洲午夜精品久久| 香蕉视频成人在线观看| 欧美性猛交视频| 亚洲自拍偷拍视频| 午夜久久久久| 好男人免费精品视频| 老司机免费视频一区二区| 免费欧美日韩国产三级电影| 亚洲国产经典视频| 欧美日韩精品免费看| 一区二区高清视频在线观看| 亚洲在线一区| 久久久蜜桃一区二区人| 免费观看久久久4p| 亚洲精品字幕| 国产九区一区在线| 免费在线亚洲欧美| 午夜精品视频在线观看| 另类亚洲自拍| 午夜精品久久久久久久99樱桃 | 99视频精品在线| 国产日韩欧美在线播放| 麻豆精品精华液| 午夜精品福利在线| 一区二区三区产品免费精品久久75 | 亚洲视频一区在线| 亚洲高清免费| 韩日精品视频| 国产精品狼人久久影院观看方式| 免费一级欧美片在线观看| 亚洲性感激情| 亚洲一级网站| 欧美亚洲视频一区二区| av成人老司机| 一本综合久久| 一区二区欧美激情| 日韩一区二区精品葵司在线| 欧美18av| 亚洲国产精品美女| 亚洲国产精品传媒在线观看| 久久影院亚洲| 亚洲国产美女| 在线成人中文字幕| 一色屋精品视频在线观看网站| 国产综合色在线| 亚洲日本在线观看| 欧美成人精品在线| 欧美国产日本韩| 亚洲国产精品一区二区第四页av| 亚洲黄色免费网站| 99精品视频免费| 小黄鸭精品密入口导航| 久久激情一区| 欧美成人黑人xx视频免费观看| 美玉足脚交一区二区三区图片| 老司机一区二区| 欧美精品一区二区高清在线观看| 欧美日韩成人在线播放| 国产精品久久久久三级| 激情另类综合| 99精品热视频| 欧美在线高清| 欧美成年网站| 久久精品91| 国产日韩欧美电影在线观看| 日韩五码在线| 欧美激情一区在线观看| 午夜精品一区二区在线观看| 欧美激情视频免费观看| 亚洲激情影视| 蜜臀av一级做a爰片久久| 在线亚洲精品| 欧美日韩综合视频| 亚洲美女在线一区| 欧美黄色成人网| 久久这里有精品视频| 欧美第一黄色网| 欧美一区二区视频在线| 国产精品国内视频| 在线一区日本视频| 亚洲精品欧美在线| 欧美精品福利视频| 亚洲天堂偷拍| 久久精品国产亚洲高清剧情介绍| 夜夜爽99久久国产综合精品女不卡| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产一区二区三区的电影| 亚洲欧美日韩一区二区在线| 一区二区久久| 国产九色精品成人porny| 久久性天堂网| 欧美人成在线视频| 午夜亚洲影视| 免费人成精品欧美精品| 亚洲视频网站在线观看| 欧美在线国产精品| 一卡二卡3卡四卡高清精品视频| 在线综合亚洲| 最新日韩中文字幕| 亚洲一区二区三区在线视频| 国产亚洲午夜| 亚洲视频一区| 亚洲日本激情| 久久久久九九视频| 欧美一区二区三区男人的天堂| 久久欧美中文字幕| 欧美一区二区三区四区视频| 欧美精品在线免费播放| 男同欧美伦乱| 伊人久久亚洲热| 亚洲第一精品福利| 性欧美xxxx视频在线观看| 宅男噜噜噜66一区二区| 欧美成人综合在线| 亚洲高清自拍| 亚洲女女女同性video| 亚洲人成网在线播放| 欧美ed2k| 亚洲欧洲精品一区二区三区不卡| 黄色精品网站| 欧美激情偷拍| 99视频精品| 久久久精品免费视频| 激情综合五月天| 欧美成人午夜影院| 中文欧美字幕免费| 午夜精品一区二区三区四区| 国产一区久久久| 麻豆精品视频在线观看|