当加载动态库,在磁盘上更新,然后启动链接到该库的新进程时,linux中会发生什么?新进程是否与旧内存副本或磁盘上的较新版本相关联?
答案 0 :(得分:2)
当包管理器更新磁盘上的文件时,它们实际上删除旧文件并在其位置写入新文件。结果是,已经打开库的旧应用程序继续看到旧的 - 旧文件仍然存在于磁盘和内存中,但没有文件名指向它。这些类型的文件称为孤儿。
同时,应用程序在替换库后启动,开始使用库的更新版本。
这就是为什么在断电后,您有时会在日志或启动过程中看到以下消息:
EXT4-fs (sda3): 34 orphan inodes deleted
旧系统在崩溃时仍在访问这些文件,但它们不再对应用程序可见,因此应将其删除。