【问题标题】:Executing binary files using exec* in c在 c 中使用 exec* 执行二进制文件
【发布时间】:2014-01-24 12:48:28
【问题描述】:

我正在制作一个玩具外壳。我想执行一个位于 PATH 变量或当前目录中的二进制文件。这就是我正在做的事情:

execl(filePath," -e ",com.arguments,NULL);  //e.g of filePath: /home/dino/programs/mywrapper

现在它适用于某些可执行文件,如which 命令。但是对于像tar 这样的命令,就会抛出一大堆错误。

基本上我想要的只是execl 在我的shell 中执行filePath 中提到的可执行文件。我该怎么做?

编辑: com.arguments 是参数列表。例如在which bash 中,bash 成为我的论点。在tar -zvcf bazinga.tar.gz bazinga/-zvcf bazinga.tar.gz bazinga/ 成为我的论点等。

【问题讨论】:

  • 在拨打execl()之前,您是否先拨打fork()
  • 是的,我正在调用 fork()
  • 请记住,您传递给您exec 的程序的参数就是该程序中的argv。所以第一个参数(argv[0])应该是程序名。
  • 如果您告诉我们您遇到了哪些错误,甚至可能准备了一个仍然可以显示问题的最小工作示例,也许会更容易回答这个问题?
  • 如果com.arguments 是参数列表,您可能希望使用execv 而不是execl

标签: c shell exec


【解决方案1】:

来自execl's documentation

 The first argument, by convention, should point to the
filename associated with the file being executed.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2018-03-19
    • 1970-01-01
    • 2019-01-26
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多