当前位置: 首页 > 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/news/308123.html

相关文章:

  • 【疑难杂症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++笔记---二叉搜索树
  • 动手学深度学习(pytorch)学习记录31-批量规范化(batch normalization)[学习记录]
  • C++基础面试题 | C++中的构造函数可以是虚函数吗? C++中的析构函数一定要是虚函数吗?
  • SpringBoot 消息队列RabbitMQ消息的可靠性 配置连接重试 生产者重连
  • 医学数据分析实训 项目三 关联规则分析作业--在线购物车分析--痹症方剂用药规律分析
  • 科技赋能司法:易保全如何重塑法律文书签署与庭审流程
  • yjs07——numpy数组的使用
  • 【Linux】-基本指令(上)
  • 7-16 一元多项式求导(vector)
  • Linux - iptables防火墙
  • 安全、稳定、高速的跨国文件传输系统