“命令-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