可以通过系统调用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 的返回值