gpt4 book ai didi

c++ - 检查文件是否是 C++ 中的命名管道 (fifo)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:19 24 4
gpt4 key购买 nike

我有一个程序使用 C++ 从文件“foo”中读取:

pFile = fopen ("foo" , "r");

如果文件是命名管道,我希望它停止执行函数的其余部分。有没有办法在打开文件之前检查文件是否是命名管道?

我使用 python 发现了完全相同的问题: Check if file is a named pipe (fifo) in python?我可以在 C++ 中做类似的事情吗?

最佳答案

来自 man 2 stat:

int fstat(int filedes, struct stat *buf);

...The following POSIX macros are defined to check the file type using the st_mode field:

         S_ISFIFO(m) FIFO (named pipe)?

所以 struct stat st; ... !fstat(fileno(pFile, &st) && S_ISFIFO(st.st_mode) 应该有效。

编辑:另见SzG的优秀answer ,以及 Brian 对此的评论。

关于c++ - 检查文件是否是 C++ 中的命名管道 (fifo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21468856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com