问题:我正在编写一些可移植到 Linux 和 Cygwin(在 msys 上编译)的代码,并且符号链接的处理方式不同。在 Cygwin 上,如果我以正常方式创建符号链接,并使用默认的 Cygwin shell(即CYGWIN
未设置 envvar):
$ ln -s foo bar
然后fopen(bar)
不遵循符号链接。第一行文本似乎是!<symlink>.
,我的代码报告打开的文件不是 UTF-8。
我可以通过以管理员身份运行 Cygwin、设置CYGWIN
为winsymlinks:nativestrict
、删除符号链接并重新创建它来解决此问题。然而,这并不理想:在我的例子中,符号链接是由 Linux 代码库中的 Subversion 创建的,所以我现在需要在每次更新后编写链接删除和重新制作脚本。
- 有没有更好的方法来做到这一点,还是我必须要求 Cygwin 用户以管理员身份运行并设置
CYGWIN
? - 如何编写代码以遵循本机 Cygwin 符号链接?
- 如何编写代码来找出我正在处理的符号链接类型?这也被问到这里,但那里的答案是脚本化的
谢谢。
编辑
好的,我认为答案基本上在这里,在 2007 年的 MinGW 邮件列表中。如果您使用 MinGW 编译,则不能使用 Cygwin 本机符号链接。也许自 2007 年以来情况发生了变化?