这里我尝试使用execle()生成bash,并希望为新的bash设置TMOUT环境。 它运作良好。 我可以从新的bash shell中看到TMOUT环境变量。
<example1>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
char *env[] = {"TMOUT=60", NULL};
execle("/bin/bash", "bash", NULL, env);
return 0;
}
但是如果我像example2一样使用sudo,我就看不到新shell中的TMOUT环境变量了。
<example2>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
char *env[] = {"TMOUT=60", NULL};
execle("/bin/sudo", "sudo", "/bin/bash", NULL, NULL);
return 0;
}
我试图从这里找到一些这样的例子。 我可以在上面找到有关example1的一些信息。 但我找不到关于example2的好信息。
我还尝试使用putenv()。
<example3>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
putenv("TMOUT=60");
execle("/bin/sudo", "sudo", "/bin/bash", NULL, NULL);
return 0;
}
但是这个例子3也没有用。 当我像这样使用sudo时,你能告诉我如何设置环境吗?