zoukankan      html  css  js  c++  java
  • 读书笔记之:高级Linux编程(ch14)

    第2章 编写优质GNU/Linux软件

    1.与运行环境交互

    获取参数:主要采用getopt和getopt_long函数

    头文件 #include<unistd.h>  或 <getopt.h>

    函数原型 int getopt(int argc,char * const argv[ ],const char * optstring);  

    int getopt_long(int argc, char * const argv[], const char *optstring,const struct option *longopts, int *longindex); 

    参数说明 参数argc和argv是由main()传递的参数个数和内容。

    参数 optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数,

    如果选项字符后无冒号, 表示参数选项不包含参数,处理时忽略参数。

    如果选项字符后跟冒号":", 表示参数选项含有参数,跟在参数选项后的一字符串为该选项的参数

    如果选项字符后跟双冒号"::", 表示该选项的参数为可选,根据具体的命令而定。(不是所有Linux都支持)

    longopts 是结构数组,用来指明短参数对应的长参数,使用如下结构:

    struct option {

    const char *name;// 长选项的名字

    int has_arg;// 是否有参数:0没有

    int *flag;//如何返回长选项的结果,一般为NULL

    int val;//将要返回的结果,可以理解为对应的短选项

    };类似这种:

    const struct option long_options[] = {

    { "help", 0, NULL, 'h' },

    { "output", 1, NULL, 'o' },

    { "verbose", 0, NULL, 'v' },

    { NULL, 0, NULL, 0}//数组中最后一个元素的所有域都应为 0

    };

    extern char *optarg;

    extern int optind, opterr, optopt;

    全域变量optarg 指向当前选项的参数,如果没有参数则为空。

     

    2. stdout 是经过缓冲处理的

    在C++中,cout和cerr之间也有这样的区别。注意endl操作符除了输出换行符,还会执行刷新操作;如果你不希望执行刷新操作(例如出于运行效率的考虑)则应该使用常量'\n'表示换行。

     

    3. 环境变量:

    environ数组包含了所有环境变量,使用时需要extern char** environ;

    不要直接修改 environ 变量;如果需要修改环境变量,则应通过 setenv 和 unsetenv 函数完成。

     

    4.临时文件

    5. 编写并使用程序库

    存档文件

    6. 共享库

    7.动态加载与卸载

    第4章 线程

    1. C++中线程清理方法

  • 相关阅读:
    LocalSessionFactoryBean有几个属性查找hibernate映射文件
    关于Spring中配置LocalSessionFactoryBean来生成SessionFactory
    【Spring源码分析】配置文件读取流程
    Java序列化接口的作用总结1
    Java序列化接口的作用总结
    hibernate抓取策略
    170531、FormData 对象的使用
    170530、java 迭代hashmap常用的三种方法
    170529、springMVC 的工作原理和机制
    170526、spring 执行定时任务
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2477373.html
Copyright © 2011-2022 走看看