例如,软件更新程序会update-manager
弹出并显示Firefox的安全更新。自然,我将单击“立即安装”继续。
但是,如果我仍在运行Firefox,该怎么办?还会更新Firefox吗?是否会跳过更新并仅在下次再次弹出?此更新会迫使Firefox关闭并可能崩溃吗?它会仅部分更新软件并可能破坏我的Firefox安装吗?
例如,软件更新程序会update-manager
弹出并显示Firefox的安全更新。自然,我将单击“立即安装”继续。
但是,如果我仍在运行Firefox,该怎么办?还会更新Firefox吗?是否会跳过更新并仅在下次再次弹出?此更新会迫使Firefox关闭并可能崩溃吗?它会仅部分更新软件并可能破坏我的Firefox安装吗?
Answers:
您一定在考虑Windows。Unix做得对,后来Windows出现并开发了错误的处理方式。
使用Windows,替换正在运行的进程正在使用的文件会严重影响该进程。该过程将引用该文件中的位置,并从文件中获取不正确的信息,通常会导致灾难性的结果。这就是Windows更新通常要求重新启动以确保所有进程都使用正确版本的库等的原因。
在Unix中,一旦进程打开了一个文件,即使从文件系统中删除了原始文件,该文件也始终对进程可用。
更新后,文件系统将包含该文件的不同版本,并且更新后启动的所有进程都将使用该新文件。但是,与Windows不同,所有旧的Unix进程将继续使用它们最初使用的原始文件。即使不再可以通过文件系统访问,只要任何进程正在使用它们,这些文件都将保留。最终,当没有进程使用文件时,文件的旧版本将最终被删除。
如果您想立即获得更新的好处,您当然可以决定重新启动Firefox(或其他进程)。这是你的选择。
通常,在程序已经打开时更新程序是没有问题的-正如其他答复者所解释的,即使删除了可执行文件,正在运行的进程也可以继续运行。
但是,由于Firefox的多进程模型,无论如何更新后,您可能会提示您重新启动它。这是因为 Firefox产生了新的进程来隔离不同的网站,因此,如果在更新后但重新启动Firefox之前产生了新的进程,则新进程将是比其他浏览器新的Firefox版本。这可能会导致各种问题,因此Firefox可能会提示您重新启动它,然后再允许您继续。
顺便说一句,Chrome 通过使用无所事事的“合子”过程来避免这种情况。当浏览器需要产生一个新进程时,而不是要求操作系统再次执行浏览器可执行文件(它将执行可能已更新的二进制文件),而是要求合子进程自我复制,然后其中一个副本成为普通的渲染器。处理。