-
Linux 平台 SO 替换可分为静态替换和动态替换:静态替换使用文件操作直接替换 SO,新的 SO 在下次加载时生效; 动态替换使用注入来替换目标进程的内存空间,以加载和替换新的 SO,新的 SO 立即生效。
静态替换。 对于卸载的 SO,可以使用 copy 命令 (cp) 直接完成静态替换,新的 SO 将在下一次加载时生效。 对于已经加载过的原始 SO,直接替换为新的 SO 副本会导致相应的程序崩溃,这种情况下,可以使用删除原有 SO (rm -f 或修改原有 SO 名称 (mv) 的方法,然后复制新的 SO,新的 SO 也会在下次加载时生效。
崩溃的原因是复制和替换操作会破坏系统访问原始 SO 的 inode inode,导致系统找到原始 SO。 系统为加载到内存中的每个文件创建一个 inode 来管理文件,其中包含有关文件的元信息,例如文件字节数、所有者 ID、读写执行权限等。 系统用 inode 识别程序加载的 SO,不再关心文件名,修改 SO 名称不会改变对应的 inode,因此程序可以继续正常运行; 删除 SO 只是无法查看,系统在程序释放 SO 之前不会真正删除 SO 和 INODE,因此程序也可以继续正常运行; 但是,在直接复制和替换时,新的 SO 会继承原 SO 的 inode,程序将无法再访问原 SO,导致程序崩溃。
动态替换。 对于程序已经加载的 SO,可以采用动态替换来达到不停止程序的目的,被替换的 SO 立即生效。
动态替换的对象可以是整个 SO 或 SO 中的特定函数。 两者的主要区别在于,整体替换需要在特定功能替换的基础上增加加载和输出功能重定位等流程。 由于时间关系,本文仅介绍特定函数动态替换的基本原理和初步实现,有兴趣的读者可以自行尝试。
所特定功能的动态替换主要包括三个关键过程:控制目标进程、构建替换内容和确定替换地址,这实际上解决了替换什么、替换什么、替换什么的问题。
-
Windows 使用 LAN 共享文件。 Linux 安装 Samba 以加入 Windows 共享网络。 效果是 Windows 可以从网络邻居访问 Linux 主机的共享文件夹,Linux 也可以从“网络”访问 Windows 共享文件夹。
换言之,其效果与在 LAN 上的两个 Windows 主机之间共享文件相同。 不建议使用 FTP。 FTP有很多缺点。
最大的缺点是不能直接修改FTP主机上的文件,必须从远程主机**一个文件才能在本地修改,换句话说,你必须在不同的主机上保存两个副本。 另一方面,Samba 允许您直接修改远程主机的文件,只要您拥有相应的权限,这与修改本地文件没有什么不同。 FTP共享最糟糕的部分是,如果你忘记了最近更新了哪个文件,你必须打开它们并一一比较才能得出结论,这是非常低效的。
Win7的分享设置实在是太固执了,分享后取消不容易,方法很多,但是很多都是取消的,但是上手之后,让人有点头疼的启动,下面我们就来看看这个方法吧。 >>>More
对于正则表达式,如果安装了 uedit,则可以在正则表达式引擎>搜索>高级>配置中选择 perl 模式。 然后选择“替换”,勾选正则表达式,然后在搜索框中输入以下文本。 >>>More