gpt4 book ai didi

c++ - 在共享库的用户之间共享数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:17 28 4
gpt4 key购买 nike

我有一个共享库 foo.so,它包含一个名为 initialize() 的函数。有多个可执行文件打开 foo.so,每个都调用 initialize()。我希望 initialize() 检查它是否已经被另一个可执行文件调用,如果是,什么也不做。在这些流程之间共享此信息的最佳方式是什么?是否有一些特殊的工具可以共享此类信息,或者我是否需要使用标准 IPC?

最佳答案

创建一个文件/var/db/mylibname。如果 open() 返回一个错误,指出该文件已经存在,那么你的库已经初始化。

它需要添加 atexit() 处理程序,该处理程序将在进程退出时删除文件。仅当 open() 返回成功时才必须初始化 Atexit。

更新:

如果资源必须只初始化一次,并且如果它们(资源)不依赖于当时使用该库的任何进程的存在,那么最好在/var 中创建文件/run 目录(以便在系统重启后清理)并忘记 atexit()。

关于c++ - 在共享库的用户之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141252/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com