How to enter in to network namespace and read the file content using C program

In my Linux machine, i have configured the network namespace. With shell script or command line or system command I was able to fetch the file content present in the network namespace.

ip netns exec test_namespace cat /var/test_namespace/route.conf



In a C program, I can use system("ip netns exec test_namespace cat /var/test_namespace/route.conf") command to get the output. But I prefer not to use this option.

Looking for an alternative method, I am not sure about the system call setns, how to use it. Any ideas?


  • If you're alergic to system, you can use popen to read the script output as a file:


    #include <stdio.h>
    /* 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))
    /* and close the process */