我知道getenv()返回当前用户的指定环境变量的值,但我的代码需要root权限,因此getenv()只会使用sudo环境变量.我也知道SUDO_USER告诉哪个用户正在调用sudo,这是我想用于getenv()的用户环境.
char* gnome_env_var = getenv("GDMSESSION"); //returns null as not found in sudo env
char* usr = getenv("SUDO_USER");
Run Code Online (Sandbox Code Playgroud)
有没有办法可以为登录用户获取环境变量的值,而不是sudo环境?
编辑 好的,所以我听到的是环境变量集对于每个进程都是唯一的,而不是用户和使用sudo来调用具有root权限的进程调用execve,这可以为该进程创建一组全新的环境变量.那么换句话说,除了弄乱sudoers文件之外,还有一种方法,在当前流程中,找到调用进程的环境变量?
我特别需要GDMSession环境变量.