gpt4 book ai didi

c++ - POSIX 中是否存在空文件描述符值?

转载 作者:行者123 更新时间:2023-11-30 01:04:46 28 4
gpt4 key购买 nike

tl;dr 是否有一个 posix 描述符值,我可以将其放入 close() 中,但什么也不会发生?


是否有我可以使用的特定值,例如指针和文件描述符的NULL?我希望代码是统一的,所以我想我可以将原始描述符设置为空描述符。

class socket
{
int fd;
public:
//deleted copy operations
socket(socket&& other):
fd{other.fd}
{
other.fd = /*null descriptor*/
}

~socket()
{
if (close(fd) == -1)
{
throw std::runtime_error{strerror(errno)};
}
// ^^ null file descriptor will do nothing on close()
// like delete nullptr;
}

我可以存储 bool 标志,但我想避免它。

它将使用的操作系统是 Ubuntu 16.04,带有 gcc 5.4。我无法使用 POSIX 和标准库本身之外的任何库,直到 gcc 5.4 中存在的版本。

我尝试阅读 open()close() 的手册页。他们没有提到任何特殊的使用值(value)。

我尝试将其设置为 -1,但我不确定它是否可以在任何地方安全使用。

最佳答案

文件描述符的负 1 值可以在 close 调用中使用,除了 close 返回 -1 本身之外,不会对应用程序产生任何有害影响。

由于负数保证永远不会是有效的文件描述符,因此它是安全的。

关于c++ - POSIX 中是否存在空文件描述符值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49431254/

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