在Mono中检测符号链接和管道

时间:2013-10-17 13:32:28

标签: c# linux mono pipe symlink

有没有办法区分使用C#和Mono的符号链接和管道等特殊文件?

该应用程序是一个多平台备份工具,因此我希望避免使用互操作库或“C”dll,并寻找直接的托管代码解决方案。

1 个答案:

答案 0 :(得分:2)

在挖掘了更多之后,我找到了解决方案。

Mono.Posix 的引用添加到项目中可以访问某些Unix文件系统属性。

Mono.Unix.UnixSymbolicLinkInfo i = new Mono.Unix.UnixSymbolicLinkInfo( path );
switch( i.FileType )
{
   case FileTypes.SymbolicLink:
   case FileTypes.Fifo:
   case FileTypes.Socket:
   case FileTypes.BlockDevice:
   case FileTypes.CharacterDevice:
   case FileTypes.Directory:
   case FileTypes.RegularFile:
}

以上代码有助于识别一系列特殊文件。

使用 UnixSymbolicLinkInfo 非常重要,因为 UnixFileInfo UnixDirectoryInfo 在测试之前解析符号链接。