🤖️ ChatGPT 成了我的新老师
之前看 Node.js 下面这部分代码不懂复杂的位运算里面的门门道道, 且因为 Google 理解不了上下文又找不到答案, 于是尝试询问了一下 ️ ChatGPT, 它准确的为我解答了疑惑!
我: 下面代码中的位运算做了什么事
for (auto& s : stdio) {
const int fd = &s - stdio;
struct stat tmp;
if (-1 == fstat(fd, &tmp)) {
CHECK_EQ(errno, EBADF); // Program closed file descriptor.
continue;
bool is_same_file =
(s.stat.st_dev == tmp.st_dev && s.stat.st_ino == tmp.st_ino);
if (!is_same_file) continue; // Program reopened file descriptor.
int flags;
do flags = fcntl(fd, F_GETFL);
while (flags == -1 && errno == EINTR); // NOLINT
CHECK_NE(flags, -1);
if (O_NONBLOCK & (flags ^ s.flags)) {
flags &= ~O_NONBLOCK;
flags |= s.flags & O_NONBLOCK;