我有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()?相关推荐

  1. 接收list参数_what?你竟然不知道C#中的方法及参数的类型解析!那还不快来瞅瞅...

    更多精彩,请点击上方蓝字关注我们! 前言 哈哈,今天来给大家讲解一下关于C#中方法及参数的几种类型解析,没有看过的朋友,可以仔细的来瞧瞧了! 那么,还是话不多说,直接给大家先上今天的干货了. 一.方法 ...

  2. c语言if中文字符串比较好,如何在C语言中使用汉字作为if的判断语句?

    题目: 如何在C语言中使用汉字作为if的判断语句? 解答: 直观点可以用strcmp函数,如果想用直接用==或!=来判断,你要先把汉字换成一个unsigned short型,要比较的汉字也放入一个un ...

  3. c语言time函数怎么使用_如何在C / C ++中使用time()函数?

    c语言time函数怎么使用 In this article, we'll take a look at using the time() function in C/C++. 在本文中,我们将研究在C ...

  4. python中可以使用变量来引用函数吗_如何在python语言中使用函数变量并调用函数...

    在python语言中,除了常规变量之外,还有函数变量.把函数本身赋值给变量,这个变量为函数变量. 工具/原料 python pycharm 截图工具 WPS 方法/步骤 1 在已新建的python文件 ...

  5. linux判断参数是否存在,检查bash shell脚本中是否存在输入参数

    我需要检查输入参数的存在性.我有下面的剧本 if ["$1" -gt"-1" ] then echo hi fi 我得到 [: : integer expres ...

  6. 连接oracle配置文件参数,Hibernate3 +Oracle10g 集群,hibernate配置文件中如何编写连接参数...

    遇见问题: 使用hibernate3来连接Oracle10g的集群,连接时不稳定,有时候正常连接,有时候不能正常连接.不知道是不是配置文件有问题,请大家帮我查看一下,谢谢各位了! 开发工具:Eclip ...

  7. php引用http的页面,如何在HTTPS 网页中引入HTTP资源: Mixed Content?

    HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的. 方法1:相对协议. 对于同时支持 ...

  8. c语言2L,求助,R8C 2L 如何在C语言定位常数数组到绝对地址

    满意答案 spk000 推荐于 2016.08.28 采纳率:58%    等级:8 已帮助:311人 #include #include using namespace std; class Stu ...

  9. c语言如何实现自动打开网页,如何在C语言中打开网页链接,谢谢大佬!!!

    #include #include int main() { float a,b,c,d;//定义好多个变量 char e[100]="我愿意";//为下面的选择做铺垫 char  ...

  10. c语言编辑货币,关于格式化:如何在C语言中用逗号格式化货币?

    我想将Long Float格式设置为C货币.我想在开头放置一个美元符号,用逗号对小数点前的第三个数字进行迭代,并在小数点前进行一个点运算. 到目前为止,我一直在打印如下数字: printf(" ...

最新文章

  1. C++11中std::lock_guard的使用
  2. C语言复习:内存模型2
  3. Announcing Zuul: Edge Service in the Cloud--转
  4. Linux入门基础思维导图
  5. RabbitMq的学习(一):VirtualHost
  6. Deep Q-learning
  7. idea项目(git)版本回退
  8. 关于父窗口、子窗口的操作(如关闭、打开、调用方法、刷新等等)
  9. 计算机科学技术专业单片机,计算机科学与技术专业毕业论文---基于单片机的智能浇花系统的设计与实现.docx...
  10. matlab编程求20的阶乘和,matlab编程求20的阶乘
  11. 14 款(移动端)UI 框架
  12. 十三经结业:《诗经》之《蒹葭》赏析
  13. 假设检验之单个总体均值检验(含Python代码)
  14. 计算机中时间服务是哪个,电脑时间不对 Windows时间服务未运行的解决办法
  15. QT 使用QModbus类实现modbus TCP踩过的坑
  16. 中国传统节日简介、由来、习俗
  17. Exoplayer2 播放单个音频
  18. 微信小程序云开发—数据库增删改查
  19. ubuntu下命令行输入 sudo: ./xxx.sh:找不到命令
  20. mysql联合唯一约束_MySQL中添加唯一约束和联合唯一约束

热门文章

  1. java中workbook_java使用Workbook进行excel读取和创建
  2. Jsp+Ssm+Mysql实现的在线宠物商城系统
  3. 基于JAVA+SpringMVC+Mybatis+MYSQL的集市预约管理系统
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园多媒体大赛设计平台
  5. 基于JAVA+SpringMVC+MYSQL的社区交友平台
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的学生信息与选课系统
  7. 空间正交基的定义_正交向量与子空间
  8. pip和conda的区别【转载】
  9. 究竟 javascript 错误处理有哪些类型?
  10. Redis-主从配置