.NET如何在Linux下检测FIFO特殊文件(命名管道)
在Linux系统中用.NET识别FIFO(命名管道)文件
要在不启动外部进程的前提下识别FIFO文件,直接使用.NET的内置文件系统API即可,无需调用ls或其他外部命令。
方法1:通过File.GetAttributes判断
使用静态方法获取文件属性后,通过位运算检查是否包含FileAttributes.NamedPipe枚举值——该值在Linux系统中就对应ls显示权限位开头为p的FIFO文件:
using System.IO; string fifoPath = "/home/xxxxxx/.mkmkmmkk/sdfsdf.pipe"; FileAttributes fileAttrs = File.GetAttributes(fifoPath); bool isFifoFile = (fileAttrs & FileAttributes.NamedPipe) != 0;
方法2:通过FileInfo类判断
也可以实例化FileInfo对象,读取其Attributes属性进行判断:
using System.IO; var fifoInfo = new FileInfo("/home/xxxxxx/.mkmkmmkk/sdfsdf.pipe"); bool isFifoFile = (fifoInfo.Attributes & FileAttributes.NamedPipe) != 0;
上述两种方式均直接调用.NET原生API,不会启动任何外部进程,跨平台兼容且性能可靠。
内容的提问来源于stack exchange,提问作者manuc66
相关产品推荐
相关产品推荐

