2013-05-02 52 views
1

這是我的程序,它似乎沒有工作。有時我認爲它與\0\r而不是\n一起工作,但我想這是因爲我已經在運行此程序的終端上執行了sudo命令,所以它沒有提示我輸入密碼。試圖通過STDIN直接傳遞sudo密碼

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 

int main() 
{ 
    FILE* pipe = popen("sudo -S ls", "w"); 
    pwrite(pipe,"mypass\n"); 
    pclose(pipe); 
    return 0; 
} 

我哪裏錯了?我該如何解決它?謝謝。

+0

我想'sudo'測試它是否在TTY上運行,否則將拒絕工作。 – 2013-05-02 18:36:30

+0

您可以瞭解當前進程是否以root用戶身份運行,如果不提示_user_使用'sudo'而不是這個。 – Nick 2013-05-02 18:50:48

+0

感謝@KerrekSB和Nick,給出了一些建議。真的很感激它。設法找到解決辦法,下面回答。 – 2013-05-02 18:53:49

回答

1

我剛剛發現了一個似乎正在工作的解決方法。謝謝大家,他們調查了這個問題。

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 

int main() 
{ 
    FILE* pipe = popen("echo mypass | sudo -S ls", "w"); 
    pclose(pipe); 
    return 0; 
} 
+0

這可以通過修改sudo配置來實現,因此它不會要求輸入密碼。 – spbnick 2013-05-02 18:57:35

相關問題