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

炫彩好望角 The Colorful Cape of Good Hope

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

常用鏈接

統(tǒng)計

最新評論

Linux 編程學(xué)習(xí)筆記 02——Linux 環(huán)境

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

程序參數(shù)

沒什么特別,主要是 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) 這兩個用于解析命令行參數(shù)的使用。只要按照規(guī)范定義參數(shù),就可以很方便地進(jìn)行解析。怎么 Java 就沒有提供類似的方法呢?

環(huán)境變量

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

        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》可以查到另兩個用起來更為安全可靠的函數(shù): int setenv(const char* name, const char* value, int replace)int unsetenv(const char* name)

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

時間和日期

《BLP》只講了精確到秒的 time_t time(time_t* tloc)。《GLIBC》指出 sys/time.h 中聲明了用來獲取更高精度的結(jié)構(gòu)體 timeval 和函數(shù) int gettimeofday(struct timeval* tp, struct timezone* tzp)timeval 定義了表示整秒數(shù)的成員 tv_sec 和表示剩余毫微秒數(shù)的成員 tv_usec,其中 tv_usec 不超過一百萬,所以兩者加起來就是實(shí)際的時間。由于 timezone 結(jié)構(gòu)體已被廢棄,而且不再被 GNU 支持,所以 gettimeofday 的第二個參數(shù)只能設(shè)為 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) 生成“隨機(jī)”字符串,再創(chuàng)建相應(yīng)文件,因?yàn)樵趧?chuàng)建文件前,有可能其他程序也生成了相同的字符串,從而導(dǎo)致沖突。應(yīng)當(dāng)使用 FILE* tmpfile(void)int mkstemp(char* template) 直接生成文件——前者的好處所創(chuàng)建的臨時文件在關(guān)閉時會被自動刪除,但卻無法取得文件名;后者能得到文件名,但必須手動刪除。

用戶信息

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

主機(jī)信息

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

日志記錄

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

資源和限制

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

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

評論

# re: Linux 編程學(xué)習(xí)筆記 02——Linux 環(huán)境 2011-05-06 12:59 wales

關(guān)於syslog可以看看syslog-ng的資料  回復(fù)  更多評論   

# re: Linux 編程學(xué)習(xí)筆記 02——Linux 環(huán)境 2011-05-12 13:35 mbt scarpe

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            免费成人黄色| 毛片基地黄久久久久久天堂| 99re66热这里只有精品3直播 | 欧美激情乱人伦| 影音先锋中文字幕一区| 校园激情久久| 亚洲婷婷综合色高清在线| 欧美午夜精品久久久久久浪潮| 亚洲国产精品福利| 六月天综合网| 另类专区欧美制服同性| 亚洲国产精品黑人久久久| 噜噜噜久久亚洲精品国产品小说| 久久精品日韩一区二区三区| 好看的亚洲午夜视频在线| 久久午夜电影网| 久久综合给合| 一本久久综合| 亚洲一级影院| 国产欧美 在线欧美| 久久国产精品72免费观看| 久久av红桃一区二区小说| 在线欧美日韩| 亚洲欧洲另类| 欧美日韩免费观看一区| 亚洲自拍偷拍色片视频| 午夜精品久久久久久久男人的天堂 | 亚洲一区日韩在线| 国产欧美一区二区精品仙草咪| 久久国产视频网站| 久久女同精品一区二区| 99pao成人国产永久免费视频| 日韩一区二区免费看| 国产精品无码永久免费888| 久久久噜噜噜久久中文字免| 久久免费99精品久久久久久| 在线成人av.com| 91久久精品视频| 国产精品一级二级三级| 久久网站热最新地址| 欧美精品一区二区精品网| 亚洲一二三区在线| 欧美一区二区女人| 一二三区精品福利视频| 亚洲男人的天堂在线| 在线观看久久av| 亚洲精品乱码| 国产亚洲在线观看| 91久久久亚洲精品| 亚洲精品国精品久久99热| 国产欧美韩国高清| 欧美国产精品va在线观看| 欧美亚男人的天堂| 久热精品在线视频| 欧美日韩在线精品| 猫咪成人在线观看| 国产精品一区二区女厕厕| 欧美mv日韩mv亚洲| 国产精品女主播一区二区三区| 久久亚洲视频| 国产精品一区二区久久| 亚洲人体影院| 亚洲激情亚洲| 久久国产精品久久国产精品| 在线中文字幕不卡| 欧美1区免费| 巨胸喷奶水www久久久免费动漫| 亚洲欧洲久久| 牛牛国产精品| 久久久久久久91| 国产精品久久久久久久久婷婷 | 亚洲第一级黄色片| 小黄鸭精品aⅴ导航网站入口| 99精品国产高清一区二区 | 日韩一二三在线视频播| 久久精品国产v日韩v亚洲| 午夜精品福利电影| 欧美午夜不卡在线观看免费| 欧美激情精品久久久| 韩国一区电影| 久久久久成人精品| 亚洲专区在线视频| 亚洲淫性视频| 欧美 日韩 国产精品免费观看| 国产精品v日韩精品| 亚洲黄网站在线观看| 亚洲二区三区四区| 久久久久88色偷偷免费| 久久久久国产精品厨房| 国产乱码精品一区二区三区av| 一区二区三区视频在线观看 | 欧美激情第一页xxx| 亚洲国产成人av在线| 久久精品国产2020观看福利| 久久久不卡网国产精品一区| 国产伦精品一区二区三区四区免费 | 99热这里只有成人精品国产| 最新日韩精品| 欧美成人免费全部观看天天性色| 欧美成年人网| 免费一级欧美在线大片| 欧美成人精品影院| 亚洲国产乱码最新视频| 久久综合九色综合欧美就去吻| 久久青草欧美一区二区三区| 韩国三级电影一区二区| 久久午夜影视| 亚洲国产小视频在线观看| 亚洲免费观看高清完整版在线观看熊| 欧美激情2020午夜免费观看| 亚洲人成网站999久久久综合| 亚洲视频在线免费观看| 国产精品视频免费在线观看| 性欧美大战久久久久久久免费观看| 久久精品视频播放| 亚洲黄色在线视频| 欧美日韩成人一区二区| 亚洲一区亚洲| 美女露胸一区二区三区| 亚洲美女av电影| 国产精品日韩精品欧美在线| 久久成人18免费网站| 欧美黑人在线播放| 亚洲综合日韩在线| 黄色成人免费观看| 欧美日韩视频在线| 亚欧成人精品| 亚洲高清资源综合久久精品| 亚洲综合国产激情另类一区| 激情久久久久久久久久久久久久久久| 免费观看亚洲视频大全| 亚洲一区二区少妇| 亚洲国产高清一区二区三区| 欧美在线观看视频一区二区| 亚洲日本va午夜在线影院| 国产精品视频自拍| 美女日韩欧美| 午夜精品成人在线视频| 亚洲国产二区| 久久午夜色播影院免费高清| 亚洲无玛一区| 一区在线视频| 小黄鸭视频精品导航| 亚洲高清久久| 欧美欧美天天天天操| 女人天堂亚洲aⅴ在线观看| 99视频日韩| 激情久久五月| 国产精品日韩一区二区三区| 欧美国产一区二区在线观看| 久久精品成人一区二区三区| 中文在线不卡视频| 91久久久久久久久| 欧美成人午夜免费视在线看片| 性久久久久久久久| 亚洲在线一区二区| 99视频热这里只有精品免费| 亚洲欧洲美洲综合色网| 国语精品一区| 国产精品一区2区| 欧美午夜电影完整版| 欧美日本国产视频| 免费日韩av| 欧美大片va欧美在线播放| 久久久精品久久久久| 欧美一区二区观看视频| 亚洲影音一区| 亚洲砖区区免费| 亚洲手机在线| 亚洲视频中文| 亚洲一区二区精品视频| 一区二区三区蜜桃网| 一本色道精品久久一区二区三区 | 国产乱码精品1区2区3区| 国产精品久久久久久久久久久久| 欧美日韩午夜视频在线观看| 欧美国产第一页| 欧美精品久久一区| 欧美另类变人与禽xxxxx| 欧美日韩福利在线观看| 欧美日韩a区| 国产精品美女在线| 国产九九精品视频| 国产一区二区三区在线观看精品 | 美脚丝袜一区二区三区在线观看| 久久国产综合精品| 久久人人爽人人| 欧美大片18| 日韩一级黄色大片| 中国成人在线视频| 亚洲欧美网站| 久久综合免费视频影院| 欧美激情中文字幕一区二区| 欧美日韩在线视频首页| 国产精品一级| 亚洲人成艺术| 亚洲欧美不卡| 可以免费看不卡的av网站| 亚洲福利视频网站| 中文亚洲欧美|