c程序执行命令 execvp

/****************************************************************
**  
**  功能: 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值