c программа зависает / зацикливается при выполнении команды "sudo -s"
В настоящее время я пишу программу, которая будет запускать несколько команд (в одну строку) в CLI, используя 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;
}
Кстати, я делаю веб-приложение, пользователь напишет команду, которую он хочет выполнить. Вход будет отправлен на сервер через ajax
используя POST
запрос. И сервер работает на Linux.
2 ответа
sudo -s
потребуется пароль, поэтому программа, выполняющая эту команду, может ожидать ввода пароля