/****************************************************************
**
** 功能: linux c 执行命令程序
**
**
*****************************************************************/
#include<string.h>
#include <iostream>
#define BUF_SIZE 50
using namespace std;
void ExecuteProcess(const char *Object);
int main()
{
ExecuteProcess("ls -al ./");
ExecuteProcess("ls ./");
return 0;
}
/****************************************************************
**
** Function: ExecuteProcess
** Purpose: 运行进程
** Input Parammeters:
Object -- 需运行进程的命令行
** Return:
** datetime:
**
*****************************************************************/
void ExecuteProcess(const char *Object)
{
char Command[BUF_SIZE],Temp[BUF_SIZE];
char *Param[BUF_SIZE];
int j,i;
char *pchTemp = 0;
memset(Command, 0, sizeof(Command));
memset(Temp, 0, sizeof(Temp));
//父进程返回
if (fork()!= 0)
{
return ;
}
//子进程
strcpy(Command,Object);
i=0;
/*去掉最前面的空格*/
while((Command[i])&&(isspace(Command[i])))
{
i++;
}
/*命令分解*/
j = 0;
for(j = 0;;j++)
{
while(isspace(Command[i]))
{
Command[i++] = '\0';
}
if (Command[i] == '\0')
{
break;
}
if(Command[i] == '"')
{
i++;
}
Param[j] = Command + i;
if(Command[i-1] == '"')
{
i++;
while((Command[i])&&(Command[i]!='"'))
{
i++;
}
Command[i++] = '\0';
}
while((Command[i])&&(isspace(Command[i]) == 0)&&(Command[i]!='"'))
{
i++;
}
}
//最后一位设置为0
Param[j] = 0;
execvp(Param[0],Param);
}
需要注意参数最后一个务必设置为0。