我正在寻找文件描述符的类型,而不会在内核中阻塞。我知道我可以使用,fstat(2)
但fstat
也会获得各种元数据信息(访问时间等),这些信息可能会阻塞任意时间(尤其是在联网文件系统上)。
编辑:我正在寻找一个系统调用来执行此操作,生成一个单独的进程是不可接受的,因为生成一个进程并读取其结果肯定不是即时的。
唯一一点我需要知道的信息是真的,如果该文件描述符是一个磁盘上的“文件”( ,S_IFREG
,S_IFLNK
),S_IFDIR
或者没有。另外,如果我能说出它是套接字(S_IFSOCK
),fifo(S_IFIFO
)还是字符设备(S_IFCHR
),也可以。
我非常确定任何内核都可以随时获得此信息,并且我很感兴趣是否可以在不阻塞的情况下将其显示到用户空间。
便携式解决方案(至少为macOS和Linux)将不胜感激。
谢谢!