V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iTvX
V2EX  ›  C

exec 函数可以调用另外一个函数的方法吗?

  •  
  •   iTvX · 2020-02-15 23:44:51 +08:00 · 2505 次点击
    这是一个创建于 1744 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个好像查不到,我自己也研究不出来

    我自己写了一个程序 A,然后写了一个程序 B,想从 B 程序直接使用 A 程序的方法,但是不运行 A 程序(因为 a 程序有一些东西我不想打印出来),我只想调用 A 程序的方法,这个有办法用 exec 函数实现吗?

    6 条回复    2020-02-16 17:20:57 +08:00
    Boxjan
        1
    Boxjan  
       2020-02-16 01:37:48 +08:00 via Android
    两个都是你写的,include 不行么

    exec 系函数没啥思路,但你可以看看类似于调用动态链接库那种方式去调 A 里的函数
    iTvX
        2
    iTvX  
    OP
       2020-02-16 01:43:42 +08:00
    @Boxjan include 不行,要求必须用 exec 函数

    我现在在想是不是可以用 fork 分一个子进程出来,然后再用父进程继续往下运行
    felix021
        3
    felix021  
       2020-02-16 01:53:46 +08:00
    exec 干不了你说的事情,建议多了解下 exec 具体做了啥(可参考 APUE )。

    提供两个思路
    1. 将 A 的这个方法抽出来,实现成一个库,A、B 都引用,B 直接调用该库
    2. 如果该方法还依赖已经启动的 A 的一些数据,那么应该由 A 提供一个 rpc api,B 来调用。
    virusdefender
        4
    virusdefender  
       2020-02-16 10:38:43 +08:00
    给 A 程序加一个命令行参数,./a --func a --args 123,然后 exec 这个东西,不要和日常使用一个入口不就行了
    stevenbipt
        5
    stevenbipt  
       2020-02-16 14:01:00 +08:00
    把 A 用到的方法封装起来然后 b 去调用这样能行吗,如果用 exec 去调用不作处理在 B 中是没有输出的(写入文件什么的请忽略。。。)
    nightwitch
        6
    nightwitch  
       2020-02-16 17:20:57 +08:00
    不可能在 A 程序不配合的情况下,从 B 运行 A 内部的函数的。如果你只是不想要 a 程序的输出的话,在 B 里面拉起 A 的时候,重定向 A 的输出到 /dev/null 就行了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:15 · PVG 22:15 · LAX 06:15 · JFK 09:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.