为什么我可以播放在 Linux 上下载的媒体文件,却不能在 Windows 上播放?

为什么我可以播放在 Linux 上下载的媒体文件,却不能在 Windows 上播放?

在 Linux(使用 ext4)上,我可以打开视频文件进行播放,因为它正在通过另一个程序(我的浏览器、wget、启用顺序下载的 torrent 客户端等)下载。只要文件流式传输速度比我播放的速度快,我的媒体播放器就会顺利地播放它,不会出现任何问题。另一方面,当另一个程序正在写入文件时,Windows 几乎不允许你对文件进行任何操作。ext4 有什么功能可以实现这一点,而 NTFS 等文件系统却没有呢?

答案1

这与 ext4 或任何其他 Linux 文件系统的“特性”关系不大,而是与在每个平台上使用应用程序编程器接口 (API) 打开文件时的默认设置有关。

在 Windows 上,创建文件不带其他选项可防止其他进程同时打开它。FILE_SHARE如果您想允许其他进程这样做,则必须明确指定一个选项。

在 Linux 上,使用以下命令创建文件打开使用模式ww+允许所有其他进程读取和写入它。您必须明确使用其他系统调用来flock阻止这种情况。

这就是为什么新创建的文件(通过浏览器wget等)在 Linux 上默认可以读取,而在 Windows 上默认不共享的原因。原则上,如果程序员愿意,他们也可以反过来做。但这需要额外的努力。

相关内容