| 607 | } |
| 608 | |
| 609 | FHANDLE TFileHandle::Duplicate() const noexcept { |
| 610 | if (!IsOpen()) { |
| 611 | return INVALID_FHANDLE; |
| 612 | } |
| 613 | #if defined(_win_) |
| 614 | FHANDLE dupHandle; |
| 615 | if (!::DuplicateHandle(GetCurrentProcess(), Fd_, GetCurrentProcess(), &dupHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)) { |
| 616 | return INVALID_FHANDLE; |
| 617 | } |
| 618 | return dupHandle; |
| 619 | #elif defined(_unix_) |
| 620 | return ::dup(Fd_); |
| 621 | #else |
| 622 | #error unsupported platform |
| 623 | #endif |
| 624 | } |
| 625 | |
| 626 | int TFileHandle::Duplicate2Posix(int dstHandle) const noexcept { |
| 627 | if (!IsOpen()) { |