2013-03-22 182 views
2

什么是执行此命令的最佳方式:|我的C程序中“sudo的猫/var/log/auth.log的grep接受”? 我试着使用:在C程序中使用sudo执行shell命令

sprintf(command_result,"sudo cat /var/log/auth.log | grep Accepted"); 

但它并没有明显的工作。

+0

您可以使用system();函数,只是作为i/p参数给出命令.. – linuxD 2013-03-25 05:05:08

回答

0

你可以用管道

FILE *fp; 
fp=popen(command_result,"r"); 

执行该命令,然后就可以读取命令输出从管道fp像你从fgets()fread() ...

顺便提一下,如果在sudo命令中需要密码,则无法执行sudo命令。

+0

感谢它的工作:) – TheForbidden 2013-03-22 13:46:41

1

你不能用sprintf()执行该命令,你需要system() ATLEAST

修复:

sprintf(command_result, "sudo cat /var/log/auth.log | grep Accepted"); 
system(command_result); 
+0

好吧,它没有工作(虽然系统是正确的功能当然),但我想也许sudo访问是需要的。我不知道该怎么做?! – TheForbidden 2013-03-22 10:44:52

+0

你是什么意思,它没有工作。发生了什么? – 2013-03-22 10:48:47

+0

什么也没有发生。就好像我没有放任何东西。 那么它适用于那些不需要sudo访问命令,但使用sudo有一个问题显然是:( – TheForbidden 2013-03-22 10:50:44