2013-03-22 116 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