c语言如何引用参数,关于exec:如何在C语言中使用适当的参数调用execl()?
我有VLC(用于复制视频的程序)
如果我输入一个shell:
/ home / vlc" / home /我的电影/我想看的电影.mkv"
它打开了一个复制电影。
但是,当我运行以下程序时:
#include
int main(void) {
execl("/home/vlc","/home/my movies/the movie i want to see.mkv",NULL);
return 0;
}
vlc打开,但不复制任何内容。 我该如何解决?
我尝试过的事情:
我猜的
execl("/home/vlc","/home/my movies/the movie i want to see.mkv",NULL);
相当于在外壳中输入:
/home/vlc /home/my movies/the movie i want to see.mkv
这不起作用,所以我尝试了
execl("/home/vlc","\"/home/my movies/the movie i want to see.mkv\"",NULL);
并且vlc打开,但也不复制。
而不是最后写NULL,我尝试了0,(char *)0,1 ....无济于事。
帮帮我!!!!
execl失败后为什么不看errno? 它本可以告诉您更多有关您的问题的信息。 仔细阅读execl手册页会变成什么? :-)
execl("/home/vlc",
"/home/vlc","/home/my movies/the movie i want to see.mkv",
(char*) NULL);
您需要指定所有参数,其中包括argv[0],而不是从可执行文件中获取的。
还要确保将最终的NULL强制转换为char*。
详细信息在这里:http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html
为什么/ home / vlc需要指定两次?
第一个是完整路径,第二个是进程名称,通常第二个参数中的" vlc"就足够了
它应该是... , (char*) NULL);
@alk,的确如此。 (但是我不知道有多少当前实现会使用裸NULL来工作,因为将NULL定义为(void *)0或0L变得流行起来,使得缺少对NULL的强制转换可以在可变参数函数中实际使用;甚至传递了如果不是全部(不是全部),则裸裸0可以在大多数32位ABI和IIRC上工作,在某些64位ABI上(例如Linux使用的那一种)。
为什么我们必须强制转换为NULL?
如果NULL定义为0且sizeof(char *)!= sizeof(int)
如果您只需要执行VLC播放过程,并且仅在完成时将控制权交还给您的应用程序过程,而没有什么更复杂的了,那么我想您可以使用:
system("The same thing you type into console");
在解决execl参数中的细微误解和编写将正确引用以使shell可以撤消引用的函数之间,我知道我想要什么。
我想我明白你的意思,你的偏爱是合理的。但是,当处理这样简单的需求时,除了避免与system()中的转义序列反斜杠混淆之外,使用execl()代替system()还有其他好处吗?
出于安全原因,例如,如果您创建了一个像sprintf(buf,"ls -la %s", var)这样的字符串,并使用system(buf)执行该字符串,则有人可以给您一个文件名,例如"somefile; rm -rf ~"。
c语言如何引用参数,关于exec:如何在C语言中使用适当的参数调用execl()?相关推荐
- 接收list参数_what?你竟然不知道C#中的方法及参数的类型解析!那还不快来瞅瞅...
更多精彩,请点击上方蓝字关注我们! 前言 哈哈,今天来给大家讲解一下关于C#中方法及参数的几种类型解析,没有看过的朋友,可以仔细的来瞧瞧了! 那么,还是话不多说,直接给大家先上今天的干货了. 一.方法 ...
- c语言if中文字符串比较好,如何在C语言中使用汉字作为if的判断语句?
题目: 如何在C语言中使用汉字作为if的判断语句? 解答: 直观点可以用strcmp函数,如果想用直接用==或!=来判断,你要先把汉字换成一个unsigned short型,要比较的汉字也放入一个un ...
- c语言time函数怎么使用_如何在C / C ++中使用time()函数?
c语言time函数怎么使用 In this article, we'll take a look at using the time() function in C/C++. 在本文中,我们将研究在C ...
- python中可以使用变量来引用函数吗_如何在python语言中使用函数变量并调用函数...
在python语言中,除了常规变量之外,还有函数变量.把函数本身赋值给变量,这个变量为函数变量. 工具/原料 python pycharm 截图工具 WPS 方法/步骤 1 在已新建的python文件 ...
- linux判断参数是否存在,检查bash shell脚本中是否存在输入参数
我需要检查输入参数的存在性.我有下面的剧本 if ["$1" -gt"-1" ] then echo hi fi 我得到 [: : integer expres ...
- 连接oracle配置文件参数,Hibernate3 +Oracle10g 集群,hibernate配置文件中如何编写连接参数...
遇见问题: 使用hibernate3来连接Oracle10g的集群,连接时不稳定,有时候正常连接,有时候不能正常连接.不知道是不是配置文件有问题,请大家帮我查看一下,谢谢各位了! 开发工具:Eclip ...
- php引用http的页面,如何在HTTPS 网页中引入HTTP资源: Mixed Content?
HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的. 方法1:相对协议. 对于同时支持 ...
- c语言2L,求助,R8C 2L 如何在C语言定位常数数组到绝对地址
满意答案 spk000 推荐于 2016.08.28 采纳率:58% 等级:8 已帮助:311人 #include #include using namespace std; class Stu ...
- c语言如何实现自动打开网页,如何在C语言中打开网页链接,谢谢大佬!!!
#include #include int main() { float a,b,c,d;//定义好多个变量 char e[100]="我愿意";//为下面的选择做铺垫 char ...
- c语言编辑货币,关于格式化:如何在C语言中用逗号格式化货币?
我想将Long Float格式设置为C货币.我想在开头放置一个美元符号,用逗号对小数点前的第三个数字进行迭代,并在小数点前进行一个点运算. 到目前为止,我一直在打印如下数字: printf(" ...
最新文章
- C++11中std::lock_guard的使用
- C语言复习:内存模型2
- Announcing Zuul: Edge Service in the Cloud--转
- Linux入门基础思维导图
- RabbitMq的学习(一):VirtualHost
- Deep Q-learning
- idea项目(git)版本回退
- 关于父窗口、子窗口的操作(如关闭、打开、调用方法、刷新等等)
- 计算机科学技术专业单片机,计算机科学与技术专业毕业论文---基于单片机的智能浇花系统的设计与实现.docx...
- matlab编程求20的阶乘和,matlab编程求20的阶乘
- 14 款(移动端)UI 框架
- 十三经结业:《诗经》之《蒹葭》赏析
- 假设检验之单个总体均值检验(含Python代码)
- 计算机中时间服务是哪个,电脑时间不对 Windows时间服务未运行的解决办法
- QT 使用QModbus类实现modbus TCP踩过的坑
- 中国传统节日简介、由来、习俗
- Exoplayer2 播放单个音频
- 微信小程序云开发—数据库增删改查
- ubuntu下命令行输入 sudo: ./xxx.sh:找不到命令
- mysql联合唯一约束_MySQL中添加唯一约束和联合唯一约束
热门文章
- java中workbook_java使用Workbook进行excel读取和创建
- Jsp+Ssm+Mysql实现的在线宠物商城系统
- 基于JAVA+SpringMVC+Mybatis+MYSQL的集市预约管理系统
- 基于JAVA+SpringMVC+Mybatis+MYSQL的校园多媒体大赛设计平台
- 基于JAVA+SpringMVC+MYSQL的社区交友平台
- 基于JAVA+SpringMVC+Mybatis+MYSQL的学生信息与选课系统
- 空间正交基的定义_正交向量与子空间
- pip和conda的区别【转载】
- 究竟 javascript 错误处理有哪些类型?
- Redis-主从配置