...
2. add/get/has/del:用于操作程序自定义环境变量,参数为key-value。value,get操作支持传入默认值,在对应的环境变量不存在时,返回这个默认值。
3. setEnv/getEnv: 用于操作系统环境变量,对应标准库的setenv/getenv操作。
...
- 获取程序的bin文件绝对路径是通过/proc/$pid/目录下exe软链接文件指向的路径来确定的,用到了readlink(2)系统调用。
- 通过bin文件绝对路径可以得到bin文件所在的目录,只需要将最后的文件名部分去掉即可。
- 通过argv[0]获得命令程序路径,注意这里的路径可能是以./开头的相对路径。
- 通过setenv/getenv操作系统环境变量,参考setenv(3), getenv(3)。
- 提供getAbsolutePath方法,传入一个相对于bin文件的路径,返回这个路径的绝对路径。比如默认的配置文件路径就是通过getAbsolutePath(get("c", "conf"))来获取的,也就是配置文件夹默认在bin文件所在目录的conf文件夹。
- 按使用惯例,main函数执行的第一条语句应该就是调用Env的init方法初始化命令行参数。
待补充和完善
sylar在解析命令行参数时,没有使用getopt()/getopt_long()
接口,而是使用了自己编写的解析代码,这就导致sylar的命令行参数不支持长选项和选项合并,像ps -aux
这样的多个选项组合在一起的命令行参数以及ps --help
这样的长选项是不支持的。
...