如何解决C ++共享对象初始化构造函数析构函数
我正在使用g++
编译的共享对象作为日志API。我编写了一个小工具来练习该库,但是我发现每次程序启动和退出时都会调用共享对象的构造函数/析构函数。我希望能够维护.so
文件中任何变量/对象的状态,即使没有链接的活动应用程序也是如此。有实现这一目标的机制吗?
解决方法
即使没有链接的活动应用程序,我也希望能够维护.so文件中任何变量/对象的状态。有实现这一目标的机制吗?
在现代操作系统中,内存中的所有 “都”属于一个或多个进程,并且没有诸如“ .so
”之类的没有活动应用程序的事物。” >
此外,当您的.so
链接到多个活动应用程序(正在运行的进程)时,库仍然无法记录 共享状态-{{ 1}}将无法观察到该.so
的其他实例在其他进程中处于活动状态,除非使用某些.so
机制。
您可以使用shmat创建共享内存段,并在其中记录共享状态。该状态还将一直持续到通过smtctl系统调用将其明确删除为止。
当心:以这种方式使用共享内存会带来很多麻烦,并且很可能会成为日志API库的过大杀伤力。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。