- 论坛徽章:
- 0
|
刚在squid2和squid3原生代码中看到下面的用法,怀疑有问题,发出来大家讨论一下:
void
commSetCloseOnExec(int fd)
{
#ifdef FD_CLOEXEC
int flags;
int dummy = 0;
if ((flags = fcntl(fd, F_GETFL, dummy)) < 0)
{
debug(5, 0) ("FD %d: fcntl F_GETFL: %s\n", fd, xstrerror());
return;
}
if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0)
debug(5, 0) ("FD %d: set close-on-exec failed: %s\n", fd, xstrerror());
fd_table[fd].flags.close_on_exec = 1;
#endif
}
问题如下:
上面的代码是用来设置文件描述符标识的,但是在获取文件描述符标识的时候,使用的是F_GETFL:
flags = fcntl(fd, F_GETFL, dummy))
不因该是F_GETFD吗? |
|