2012-04-19 1 views
1

cgicコードでroute -nを呼び出そうとしていますが、popenはnullを返します。私は単純なCコードで試して、それは動作しますが、私はそれをcgiに入れてnullを返します。cgiのコール・ルート-n

 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は動作しません。

答えて

0

私のLinuxボックスを調べていると、route/sbin/routeの下にあることがわかります。したがって、私のシステムでは実行可能ですが、標準ユーザーの場合は$PATHに含まれていません。

catおよびnetstatは、/bin/の下に位置し、したがって$PATHの一部です。

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

が表示されます。

これがオプションでない場合は、パスに/sbin/を追加してください。この例でも機能します。

+0

ご返信ありがとうございます。できます。 – brknl