1

在我的 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,如何使用它。有任何想法吗?

4

1 回答 1

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);
于 2018-06-07T09:57:02.643 回答