命令行参数

当执行一个程序时,调用 exec 的进程可将命令行参数传递给新程序

例子如下:

#include <stdio.h>
#include <stdlib.h>

#define err_exit(x) do { printf("%s\n", x); exit(1); } while (0)

int main(int argc, char *argv[])
{
    if (argc < 2) {
        err_exit("Missing arguments");
    }

    for (int i = 0; i < argc; i++) {
        printf("argv[%d]: %s\n", i, argv[i]);
    }

    return 0;
}

在历史上,大多数 UNIX 系统支持 main 函数带有三个参数,其中第三个参数就是环境表的地址:

int main(int argc, char *argv[], char *envp[]);

第三个参数与全局变量 environ 相比也没有带来更多益处, 所以 ISO C 和 POSIX.1 规定 main 函数只有两个参数。 通常用 getnev 和 putenv 函数来访问特定的环境变量,而不是用 environ 变量。 但是,如果要查看这个环境,则必须使用 environ 指针

getenv 函数

#include <stdlib.h>

char *getenv(const char *name);

此函数返回一个指针指向 name = value 字符串中的 value

例如:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("%s\n", getenv("PATH"));

    return 0;
}