传递环境变量

每个进程都有一组环境变量。你可以在命令行中输入setenv查看它们的值,它们一般会告诉进程一些有用的信息,比如用户主目录的位置,或去哪里找命令。C程序可以用getenv()系统调用读取环境变量,右侧的diner_info程序演示了getenv()的使用方法。

如果你想用命令行参数和环境变量运行程序,可以这样做:

传递环境变量 - 图1

execle()函数将设置命令行参数和环境变量,然后用diner_info替换当前进程。

传递环境变量 - 图2

出错了怎么办?

如果在调用程序时发生错误,当前进程会继续运行。这点很有用,因为就算第二个进程启动失败,还是能够从错误中恢复过来,并向用户报告错误信息。而且幸运的是,C标准库提供了一些内置代码帮你做这些事。

传递环境变量 - 图3

在Cygwin中传递环境变量时一定要包含PATH变量。

在Cygwin中,加载程序时需要用PATH变量,因此在Cygwin上传递环境变量时一定要包含PATH=/usr/bin