我目前正在编写一个程序,该程序将使用 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/