在我的Linux机器上,我配置了网络命名空间。使用shell脚本或命令行或系统命令,我能够获取网络命名空间中存在的文件内容。
ip netns exec test_namespace cat /var/test_namespace/route.conf
输出:
cardIP=10.12.13.1
在C程序中,我可以使用system("ip netns exec test_namespace cat /var/test_namespace/route.conf")
命令来获取输出。但我不想使用这个选项。
寻找替代方法,我不确定系统调用setns,如何使用它。有什么想法吗?
答案 0 :(得分:1)
如果您对system
感到厌倦,可以使用popen
将脚本输出作为文件读取:
示例强>
/* the command to execute */
FILE *f = popen("ls", "r");
/* Here, we should test that f is not NULL */
printf("result of `ls`:\n");
/* read process result */
char buffer[256];
while (fgets(buffer, sizeof buffer, f)
{
puts(buffer);
}
/* and close the process */
pclose(f);