Brian Dessent wrote:
> > However, I'm not sure on mingw how to detect whether an fd is open on a
> > regular file vs. a pipe.  Any ideas?
> 
> Check out ser-mingw.c from gdb, they have a fair amount of MinGW pipe/fd
> handling code there, e.g.
> 
> static int
> fd_is_pipe (int fd)
> {
>   if (PeekNamedPipe ((HANDLE) _get_osfhandle (fd), NULL, 0, NULL, NULL,
> NULL))
>     return 1;
>   else
>     return 0;
> }

But there are other types of devices as well, such as special character
devices (COM: and consoles). It looks safer to include only the regular
files:
  GetFileType ((HANDLE) _get_osfhandle (fd)) == FILE_TYPE_DISK.

Bruno



Reply via email to