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

炫彩好望角 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>
            国产精品丝袜久久久久久app| 欧美在线视频一区二区| 久久网站热最新地址| 亚洲一区二区三区欧美| 嫩草国产精品入口| 一区二区三区国产| 欧美成人在线影院| 国产一区在线观看视频| 亚洲与欧洲av电影| 亚洲一本大道在线| 一区二区在线视频播放| 亚洲精品一区二区三区婷婷月| 亚洲色无码播放| 久久久久久久精| 国产精品欧美一区二区三区奶水 | 午夜在线一区| 欧美国产日本高清在线| 亚洲欧美一区二区三区在线| 国产综合自拍| 亚洲国产专区| 香蕉久久国产| 国产精品免费区二区三区观看| 亚洲精品色婷婷福利天堂| 一本色道久久综合一区| 野花国产精品入口| 欧美不卡高清| 亚洲综合色激情五月| 欧美韩日一区二区三区| 麻豆精品视频在线观看| 国产精品系列在线| 亚洲欧美国产三级| 亚洲色图在线视频| 久久www成人_看片免费不卡| 中国日韩欧美久久久久久久久| 久久综合九色综合欧美就去吻| 亚洲国产欧美一区二区三区丁香婷| 久久婷婷国产综合尤物精品| 久久久久久有精品国产| 亚洲综合国产激情另类一区| 欧美一区二区三区免费看| 亚洲国产天堂网精品网站| 尤物yw午夜国产精品视频明星 | 欧美午夜理伦三级在线观看| 99综合在线| 久久精品女人天堂| 久久综合九色九九| 久久免费偷拍视频| 国产精品久久久久天堂| 亚洲欧美电影院| 欧美成年人网站| 一区二区三区四区国产精品| 久久久99国产精品免费| 男男成人高潮片免费网站| 美女主播一区| 中文在线一区| 欧美激情第9页| 久热综合在线亚洲精品| 激情成人综合| 亚洲国产日韩在线| 国产自产2019最新不卡| 亚洲国产精品福利| 欧美丰满高潮xxxx喷水动漫| 亚洲在线一区二区| 欧美激情一区二区三区在线| 欧美激情网友自拍| 性色av一区二区三区| 激情伊人五月天久久综合| 欧美成人日本| 99综合在线| 久久夜色精品国产欧美乱极品| 日韩视频在线观看| 欧美资源在线| 狠狠色伊人亚洲综合网站色| 国产日韩欧美二区| 久久久亚洲国产美女国产盗摄| 欧美日韩中文| 99在线精品视频在线观看| 欧美大片va欧美在线播放| 欧美激情视频在线播放| 久久9热精品视频| 亚洲肉体裸体xxxx137| 免费精品99久久国产综合精品| 欧美第一黄色网| 国内不卡一区二区三区| 亚洲日本久久| 亚洲在线播放| 欧美激情精品久久久久久免费印度| 91久久精品国产| 久久精品1区| 亚洲欧美bt| 欧美精品系列| 国产精品久久久亚洲一区 | 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 99精品热视频只有精品10| 99视频精品免费观看| 西瓜成人精品人成网站| 日韩视频免费观看高清在线视频| 免费久久99精品国产| 亚洲国产精品一区在线观看不卡| 在线精品视频免费观看| 香蕉免费一区二区三区在线观看| 久久综合久久美利坚合众国| 在线观看亚洲| 欧美大色视频| 亚洲一区视频| 欧美成人dvd在线视频| av成人老司机| 国产视频一区二区三区在线观看| 久久青草久久| 一区二区精品在线| 久久久久九九九九| 亚洲高清视频的网址| 欧美日韩在线影院| 久久精品成人一区二区三区蜜臀 | 亚洲精品小视频在线观看| 欧美午夜性色大片在线观看| 欧美在线91| 尤物九九久久国产精品的分类| 伊甸园精品99久久久久久| 久久嫩草精品久久久精品一| 有码中文亚洲精品| 欧美不卡一卡二卡免费版| 欧美成人精品激情在线观看 | 久久午夜精品一区二区| 亚洲另类在线视频| 国产欧美一区二区精品仙草咪| 久久久亚洲精品一区二区三区| 日韩亚洲国产欧美| 噜噜噜躁狠狠躁狠狠精品视频| 一卡二卡3卡四卡高清精品视频| 国产日韩欧美亚洲一区| 欧美激情按摩在线| 欧美亚洲在线播放| 欧美11—12娇小xxxx| 在线一区欧美| 亚洲第一黄网| 久久久久这里只有精品| 亚洲一区二区三区色| 亚洲精品久久| 久久免费视频这里只有精品| 在线视频精品一区| 亚洲福利视频二区| 国产一区二区三区在线观看网站| 欧美日本在线看| 欧美刺激性大交免费视频| 久久精品国语| 久久av在线| 亚洲午夜av| 亚洲国产欧美在线| 久久亚洲国产精品一区二区 | 国产视频观看一区| 国产精品日韩精品欧美在线| 欧美日韩久久久久久| 欧美激情一级片一区二区| 欧美国产综合视频| 欧美日韩大片| 欧美性猛交xxxx乱大交蜜桃| 亚洲丁香婷深爱综合| 欧美黄色影院| 亚洲人成网站精品片在线观看| 亚洲欧洲日本一区二区三区| 日韩一级欧洲| 亚洲一区二区三区三| 欧美一区二区三区男人的天堂| 午夜久久黄色| 久久婷婷久久一区二区三区| 牛牛影视久久网| 欧美日韩中文字幕精品| 国产精品丝袜xxxxxxx| 狠狠色丁香久久婷婷综合丁香| 亚洲丰满在线| 亚洲欧美日韩天堂| 久久深夜福利| 亚洲国产精品激情在线观看| 亚洲欧美激情视频| 久久看片网站| 亚洲精品国产系列| 亚洲自拍啪啪| 久久久久久网址| 欧美日韩国产成人在线免费| 国产精品视频一区二区三区| 黑人一区二区| 亚洲图片在线观看| 老巨人导航500精品| 亚洲精品视频免费观看| 午夜精品久久久久久久久| 欧美电影在线| 国产欧美一区二区精品性| 亚洲看片网站| 久久―日本道色综合久久| 亚洲图片你懂的| 久久亚洲欧洲| 亚洲夜间福利| 亚洲国产精品久久久久久女王| 欧美精品在线视频观看| 欧美一级淫片播放口| 亚洲深爱激情| 亚洲综合不卡| 亚洲一区欧美激情| 亚洲一区二区三区四区五区午夜|