我试图在cgic代码中调用route-n,但popen返回null。我试过用一个简单的C代码,但当我把它放在cgi中时,它返回空值。

       printf("Content-type: text/html\r\n");
       printf("\r\n");
        ....
        ..
        stream = popen("route -n", "r");
        while ( fgets(buffer, 100, stream) != NULL )
        {........}

它不进入while循环。我可以叫“cat”“netstat”等,但route-n不起作用。

最佳答案

如果我查看我的linux系统,我会发现route位于/sbin/route下,因此对于标准用户来说,它不是$PATH的一部分(而对于我的系统上的用户来说,它是可执行的)。
catnetstat位于/bin/下,因此是$PATH的一部分。

popen("/sbin/route -n", "r");

会提起这个过程。
如果没有这个选项,那么将/sbin/添加到您的路径中,它也将在您的示例中起作用。

关于c - 在cgi中调用路由-n,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10224674/

10-15 01:05