例如,我有一个测试C程序,可以打印所有环境变量:
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
int main(void) {
char **env = environ;
while (*env) {
printf("%s\n", *env);
env++;
}
return EXIT_SUCCESS;
}
但是当我在se.py syscall仿真中运行它时,它不会打印任何内容,因此我猜测gem5默认情况下在syscall仿真中设置了一个空环境,而不是继承主机的环境。
在gem5 872cb227fdc0b4d60acc7840889d567a6936b6e1上进行了测试。
答案 0 :(得分:0)
通过快速se.py --help | grep -i env
,我们看到:
-e ENV, --env=ENV Initialize workload environment from text file.
,因此以下各项将按预期工作:
printf 'a=b\nc=d\n' > env.sh
se.py -e env.sh
,测试程序将打印:
a=b
c=d
尝试使用Bash的<()
表示法无效,但是gem5确实需要将其放置在常规文件中,尝试失败:
IOError: [Errno 2] No such file or directory: '/dev/fd/63'