执行 "sudo -s"命令时,c 程序挂起/循环

标签 c linux sudo command-line-interface

我目前正在编写一个程序,该程序将使用 C 在 CLI 中运行多个命令(一行)。

我需要运行的第一个命令是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;
}

顺便说一句,我正在做一个网络应用程序,用户将编写他想要执行的命令。输入将使用 POST 请求通过 ajax 发送到服务器。服务器运行在 Linux 上。

最佳答案

sudo -s

将需要密码,因此运行此命令的程序可能会等待输入密码

关于执行 "sudo -s"命令时,c 程序挂起/循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23260484/

相关文章:

ssh - Ansible 无法使用不同用户在本地主机上创建文件夹

ansible - 为什么 Ansible 忽略 ansible_become_password 变量?

linux - 为特定 shell 文件的一组用户添加 sudo 权限

c - 视频尺寸组件的 AVOptions

c - 队列:警告:赋值从整数生成指针而不进行强制转换

c - 将文本中的数据获取到数组中

c++ - 在 Linux 上启动文件的默认应用程序

Linux计算机之间的文件同步

c - 如何在make文件中定义对其他包的依赖---- OpenWrt OS

linux - Linux环境住在哪里?