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 запросит пароль и не вернет результат немедленно.

sudo -s

потребуется пароль, поэтому программа, выполняющая эту команду, может ожидать ввода пароля

Другие вопросы по тегам