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

炫彩好望角 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 蜀山兆孨龘 閱讀(1966) 評論(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>
            欧美成人性网| 亚洲精品影视| 久久婷婷麻豆| 久久久www成人免费精品| 羞羞答答国产精品www一本| 亚洲一区二区在线免费观看视频 | 久久精品国产99精品国产亚洲性色 | 亚洲国产成人91精品| 亚洲国产精品国自产拍av秋霞| 亚洲福利在线观看| 亚洲三级毛片| 亚洲欧美日本另类| 久久久久久久久岛国免费| 免费成人毛片| 欧美午夜电影在线| 国产亚洲欧洲| 亚洲人成在线免费观看| 亚洲一区综合| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美国产日韩二区| 制服丝袜亚洲播放| 久久蜜桃香蕉精品一区二区三区| 欧美高潮视频| 国产日韩一区| 亚洲视频精选| 欧美电影在线观看完整版| 亚洲精品免费一二三区| 性色av一区二区三区| 欧美大学生性色视频| 国产精品无人区| 亚洲欧洲综合另类| 午夜久久影院| 日韩亚洲欧美一区| 久久精品国亚洲| 欧美视频在线观看视频极品| 精品粉嫩aⅴ一区二区三区四区| 99精品视频网| 免费日韩成人| 亚洲欧美综合另类中字| 欧美日韩精品国产| 亚洲国产一区二区a毛片| 欧美中在线观看| 一区二区高清| 欧美区一区二| 欧美性事在线| 噜噜噜噜噜久久久久久91| 国产精品v一区二区三区 | 国产乱肥老妇国产一区二 | 香蕉成人啪国产精品视频综合网| 欧美精品v日韩精品v国产精品| 国产一区999| 午夜日韩福利| 一区二区电影免费在线观看| 欧美精品v国产精品v日韩精品| 影音先锋国产精品| 久久久久国产精品一区三寸| 亚洲一区不卡| 国产精品久久久久久久久免费 | 欧美日韩综合在线| 亚洲精品久久久久久下一站| 暖暖成人免费视频| 久久精品国产第一区二区三区最新章节 | 亚洲一区日本| 国产精品一区二区久久久久| 亚洲欧美文学| 午夜精品在线| 国产伊人精品| 农村妇女精品| 欧美激情视频网站| 一本不卡影院| 亚洲色图在线视频| 国产伦精品一区二区三区四区免费| 亚洲已满18点击进入久久| 99综合在线| 国产欧美精品va在线观看| 久久国产视频网站| 久久五月天婷婷| 亚洲国产裸拍裸体视频在线观看乱了中文 | 乱中年女人伦av一区二区| 久久99在线观看| 在线观看亚洲专区| 亚洲福利视频一区二区| 欧美日韩视频专区在线播放| 亚洲伊人第一页| 久久精品一区二区| 亚洲人成网站影音先锋播放| 亚洲三级网站| 国产精品免费看片| 久久久久久久综合狠狠综合| 久久久久久久一区| 99在线|亚洲一区二区| 亚洲欧美第一页| 亚洲国产美国国产综合一区二区| 亚洲欧洲美洲综合色网| 久久精品一二三区| 亚洲国产精品综合| 日韩视频一区| 国产偷久久久精品专区| 欧美激情亚洲一区| 国产精品美女一区二区在线观看 | 亚洲最新合集| 午夜视频一区| 日韩视频在线免费| 亚洲专区在线视频| 91久久国产自产拍夜夜嗨| 一区二区三区蜜桃网| 国产一区深夜福利| 亚洲精品一线二线三线无人区| 国产精品你懂得| 91久久久精品| 国产一区二区| 日韩天天综合| 亚洲高清一二三区| 亚洲欧美日韩国产一区二区三区| 在线精品视频在线观看高清 | 麻豆freexxxx性91精品| 亚洲欧美激情在线视频| 欧美波霸影院| 久久在线视频| 国产欧美精品一区aⅴ影院| 亚洲国产欧美不卡在线观看| 国产无遮挡一区二区三区毛片日本| 亚洲福利电影| 亚洲国产精品欧美一二99| 欧美一级播放| 翔田千里一区二区| 欧美三级午夜理伦三级中视频| 暖暖成人免费视频| 韩国女主播一区| 亚洲欧美怡红院| 亚洲无限av看| 欧美老女人xx| 亚洲日韩欧美视频一区| 亚洲黄色性网站| 久久久国产成人精品| 久久国产乱子精品免费女| 国产精品乱码人人做人人爱| 亚洲黄色大片| 亚洲精品中文字幕有码专区| 久久在线精品| 欧美黑人一区二区三区| 在线精品亚洲一区二区| 久久国产黑丝| 久久一区国产| 一区在线视频观看| 久久成人国产| 久热爱精品视频线路一| 黄色资源网久久资源365| 久久久久一本一区二区青青蜜月| 久久视频在线视频| 极品少妇一区二区三区精品视频| 欧美一级久久| 麻豆亚洲精品| 亚洲国产一区二区三区青草影视 | 久久综合一区二区| 欧美激情黄色片| 亚洲精品在线观看免费| 欧美特黄一区| 久久久久久免费| 亚洲国产精品第一区二区三区| 久久亚洲精品一区二区| 欧美二区不卡| 一区二区三区www| 国产精品私拍pans大尺度在线| 亚洲在线成人| 久久综合伊人77777麻豆| 亚洲欧洲一区二区天堂久久| 欧美日韩国内自拍| 亚洲午夜在线观看| 久久偷窥视频| 亚洲视频观看| 极品少妇一区二区| 欧美日韩国产大片| 亚洲一区网站| 欧美成人一区二区三区| 亚洲最新在线| 韩国美女久久| 国产精品久久久亚洲一区| 欧美一区二区日韩| 亚洲第一在线综合网站| 亚洲一区二区三区免费观看| 国产一区二区三区无遮挡| 欧美va亚洲va国产综合| 亚洲一区二区欧美| 亚洲观看高清完整版在线观看| 亚洲最新中文字幕| 激情小说另类小说亚洲欧美| 欧美日韩岛国| 久久综合中文色婷婷| 一区二区三区四区五区精品| 欧美aⅴ99久久黑人专区| 欧美一区二区在线免费播放| 亚洲日本视频| 国内久久婷婷综合| 欧美性一区二区| 免费看黄裸体一级大秀欧美| 亚洲欧美视频在线| 99精品国产在热久久婷婷| 亚洲成色精品| 久久天堂成人|