当前位置: 首页 > article >正文

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;
}


http://www.kler.cn/a/308123.html

相关文章:

  • 项目风险管理的3大要素
  • 《Python网络安全项目实战》项目5 编写网站扫描程序
  • Java结合ElasticSearch根据查询关键字,高亮显示全文数据。
  • DIP switch是什么?
  • React Hooks在现代前端开发中的应用
  • 爬虫补环境案例---问财网(rpc,jsdom,代理,selenium)
  • 【疑难杂症2024-005】docker-compose中设置容器的ip为固定ip后,服务无法启动
  • supermap iclient3d for cesium中entity使用
  • 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?
  • 常用压接线端子教程
  • 力扣爆刷第176天之贪心全家桶(共15道题)
  • Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 内存分配和回收规则
  • Linux 基础入门操作-实验二 makefile使用介绍 和 实验三 hello 输出
  • 【计算机网络】HTTP相关问题与解答
  • 深度学习:入门简介
  • ESP01的AT指令连接到阿里云平台
  • 春日教育技术:SpringBoot在线视频教学
  • Vue3: setup语法糖
  • Sass实现文字两侧横线及Sass常用方案
  • 微服务下设计一个注解标识是否需要登录
  • Maven入门学习笔记
  • 数据结构——“二叉搜索树”
  • Python和R均方根误差平均绝对误差算法模型
  • 监听RabbitMQ,向Elasticsearch 创建索引
  • python selenium网页操作
  • C++笔记---二叉搜索树