首页 > 解决方案 > Cygwin:使用 MinGW fopen/etc 遵循符号链接

问题描述

问题:我正在编写一些可移植到 Linux 和 Cygwin(在 msys 上编译)的代码,并且符号链接的处理方式不同。在 Cygwin 上,如果我以正常方式创建符号链接,并使用默认的 Cygwin shell(即CYGWIN未设置 envvar):

$ ln -s foo bar

然后fopen(bar)不遵循符号链接。第一行文本似乎是!<symlink>.,我的代码报告打开的文件不是 UTF-8。

我可以通过以管理员身份运行 Cygwin、设置CYGWINwinsymlinks:nativestrict、删除符号链接并重新创建它来解决此问题。然而,这并不理想:在我的例子中,符号链接是由 Linux 代码库中的 Subversion 创建的,所以我现在需要在每次更新后编写链接删除和重新制作脚本。

  1. 有没有更好的方法来做到这一点,还是我必须要求 Cygwin 用户以管理员身份运行并设置CYGWIN
  2. 如何编写代码以遵循本机 Cygwin 符号链接?
  3. 如何编写代码来找出我正在处理的符号链接类型?这也被问到这里,但那里的答案是脚本化的

谢谢。

编辑

好的,我认为答案基本上在这里,在 2007 年的 MinGW 邮件列表中。如果您使用 MinGW 编译,则不能使用 Cygwin 本机符号链接。也许自 2007 年以来情况发生了变化?

标签: cygwinmingwsymlinksymlink-traversal

解决方案


推荐阅读