【问题标题】:calling exec with a variable number of arguments?使用可变数量的参数调用 exec?
【发布时间】:2011-07-09 13:37:24
【问题描述】:

我有一个分叉其他进程的程序。我的程序的参数包括要分叉的进程的进程名称以及任何参数。

这意味着,当我调用 exec() 时,无论提供多少参数,我都需要能够处理。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: c exec command-line-arguments variadic-functions


    【解决方案1】:

    execv 函数接受一个指向参数数组的指针。

    就像在main 中一样,数组中的最后一个元素需要是一个空指针。

    【讨论】:

    • 哦,完美。这让事情变得轻松愉快:)。
    • @Blackbinary 而且,就像在 main 中一样,数组的第一个(或第 0 个)元素通常是程序名称(不必与 execv 的第一个参数相同,即名称要执行的文件)。
    【解决方案2】:

    或者,execl() 采用可变数量的参数,NULL 指针位于列表末尾。但是,您可能应该使用execv(),因为它更干净; C 中的 varargs 只能被认为是一个丑陋的 hack(如果你敢的话,有时看看(指向的文件)/usr/include/varargs.h!)。

    【讨论】:

    • 可变参数的问题不在于有人认为它是一个丑陋的黑客,而是它不能用于“处理提供的参数”,因为varargs 函数必须在编译时已知。附: varargs.h 已过时且不属于 C 标准。 stdarg.h 是正确的标题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多