c-execle()环境变量不起作用



我开始学习操作系统,我尝试在C中使用execle((系统调用,我有一个DIR环境变量,我使用类似的环境数组将其设置为/home

char* path = "/bin/ls";
char* myargs[4] = {"ls", "-la", "/home", NULL};
char *const env[] = {"DIR=/home", NULL};
execle(path, myargs[0], myargs[1], "$DIR", NULL, env);

但当我编译并运行它时,我会得到以下输出ls: cannot access '$DIR': No such file or directory

然而,这似乎很有效execle("/bin/bash", "/bin/bash", "-c", "echo $DIR", NULL, env);

我对高管电话的理解有错吗?

exec*e函数族本身并不扩展环境变量,它们只是将环境传递给新程序以进行getenv调用。

呼叫

execle("/bin/bash", "/bin/bash", "-c", "echo $DIR", NULL, env);

之所以有效,是因为调用的shell执行$DIR环境变量的扩展,而不是由程序或execle函数进行扩展。

最新更新