一个 c 语言热更新的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
laipidov
V2EX    问与答

一个 c 语言热更新的问题

  •  
  •   laipidov 2022-07-02 21:56:53 +08:00 1748 次点击
    这是一个创建于 1204 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟最近遇到一个问题,大概描述如下:一个 c 语言的工程,其中有一个模块会加载一堆规则用来处理字符串,这些规则写在了一个规则文件里。现在想实现热更新的功能:在不重新编译的的前提下,在规则文件中增 /删规则,并让改变生效。

    小弟之前没接触过这方面的知识,查了资料感觉也不是很懂,请问有人能指点一下吗?

    Inn0Vat10n
        1
    Inn0Vat10n  
       2022-07-02 22:00:03 +08:00
    如果你的热更新只要求"不重新编译",那重启进程不就好了
    wudicgi
        2
    wudicgi  
       2022-07-02 22:08:15 +08:00
    和热更新就没关系,基础的编程问题

    处理好内存中数据结构的更新和应用就可以了
    完全不知道怎么下手,只能是先去找类似功能的开源代码看
    laipidov
        3
    laipidov  
    OP
       2022-07-02 22:11:20 +08:00
    @Inn0Vat10n 写错了。。我重新编辑下,感谢提醒
    laipidov
        4
    laipidov  
    OP
       2022-07-02 22:13:30 +08:00
    更新一下,在不重启代码的情况下,修改某个资源文件(比如说 txt 什么的),可以动态的加载
    laipidov
        5
    laipidov  
    OP
       2022-07-02 22:15:05 +08:00
    @wudicgi 之前没搞过这个,找了一圈都是热更新代码的,也许是类似的?我再去看看
    darklights
        6
    strong>darklights  
       2022-07-02 22:36:33 +08:00
    这个不是热更新。要做的是监视文件变化,重新解释再替换旧的。

    给个参考,注释是重点
    https://github.com/microsoft/terminal/blob/6a37818c075929d5727535bf250f3e8b6c94fc6f/src/cascadia/TerminalApp/AppLogic.cpp#L860
    BeautifulSoap
        7
    BeautifulSoap  
       2022-07-02 22:43:28 +08:00 via Android
    这和热更新有什么关系。。。。
    不住到知道怎么监视文件变化的话,写个 while 循环定期重新加载规则文件都想不到吗。。。。。
    2NUT
        8
    2NUT  
       2022-07-02 23:09:24 +08:00
    用一个线程去 检查 资源文件的 stat 信息更新, 建一个 内核消息队列 给 执行后续逻辑的线程
    Askiz
        9
    Askiz  
       2022-07-03 01:41:22 +08:00 via Android
    这好像是叫配置文件的热加载
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2518 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 06:25 PVG 14:25 LAX 23:25 JFK 02:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86