C 使用 write(2) 检查 fd 是否打开



可以通过系统调用write(2)知道我要向其发送数据的 fd 是打开还是关闭?

我的问题是我正在写信给一个有时关闭有时开放的 fd。我认为一定有办法知道这种情况write但我找不到。

您可以使用不影响文件的系统函数(如果打开),而不是写入,使用fstat(手册页)

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

struct stat buf;
if (fstat(fd, &buf) == -1) {
// fd is either closed or not accessible 
}

如果fstat()无法使用文件描述符(否则0),则返回-1

来自手册页

成功时,返回写入的字节数(零表示 什么也没写)。出错时,返回 -1,并设置 errno 适当地。

所以只需检查 -1 的返回值

相关内容

  • 没有找到相关文章

最新更新