「命令-s」命令,在CLI使用C.C程序掛起當執行
我需要的第一命令我目前正在寫一個程序,將運行多個命令(在一行中)/環運行是sudo -s
。因此,我單獨運行此命令來測試程序是否正在運行,但程序在運行此命令時會掛起。我想知道問題是程序還是命令,所以我運行ls
。當我運行ls
命令時,該程序完美運行,因此我認爲sudo -s
命令有些問題,也許我需要使用該命令執行某些操作,以便它可以在CLI中運行。
下面是接受命令的功能:
int executeCommand(char *command, char *result)
{
/*This function runs a command./*/
/*The return value is the output of command*/
int nSuccess = -1;
FILE * fp = NULL;
char buffer[1035];
if (command == NULL)
render("Command is null");
if (result == NULL)
render("result is null");
if (command!=NULL && result!=NULL)
{
fp=popen(command,"r");
if(fp!=NULL)
{
strcpy(result,"\0");
while(fgets(buffer, sizeof(buffer)-1,fp)!=NULL)
{
strcat(result,buffer);
}
pclose(fp);
} nSuccess=0;
}
return nSuccess;
}
順便說一句,我在做一個web應用程序,用戶會寫他要執行的命令。輸入將通過ajax
使用POST
請求發送到服務器。服務器運行在Linux上。
並運行帶有選項LS? 'ls -n'? – LearningC
a)這看起來像是一個非常危險的web應用程序來編寫。 b)你的sudo -s可能是掛着的,因爲你正在創建一個新的shell,並且你的程序仍然依賴於舊的。 – merlin2011
你是如何配置sudo的?在默認配置中,它將嘗試從終端設備讀取密碼,而不能通過popen提供。 – Joni