Linux C execv/execl函数调用 bash -c

    在命令行/脚本中使用bash -c 执行命令时一般会把作为参数的命令部分用单引号或者双引号包起来,特别是在需要加额外参数的情况:

bash -c "ls -l"

    但是在使用Linux C函数execv/execl中执行bash -c时,给命令部分加上单/双引号后一直报错提示找不到命令:

#include <stdio.h>
#include <unistd.h> 

int main() {
	char* const argv[] = {
		"/bin/bash",
		"-c",
		"\"ls -l\"",
		NULL
	};
	execv(argv[0], argv);

	return 0;
}

    后来试了大半天都不行,最后发现其实不需要特地去加单双引号,argv作为char *数组传入execv时已经将整个命令分隔好了,bash不会将其误认为其他的命令行参数。

#include <stdio.h>
#include <unistd.h> 

int main() {
	char* const argv[] = {
		"/bin/bash",
		"-c",
		"ls -l,
		NULL
	};
	execv(argv[0], argv);

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值