std::filesystem::is_socket
std::filesystem::is_socket (네임드 소켓인지 확인)
주어진 파일 상태나 경로가 네임드 IPC 소켓에 해당하는지 확인하는 함수예요. C++17부터 있어요.
출처: cppreference
본문
<filesystem> 헤더에 정의돼 있어요.
bool is_socket( std::filesystem::file_status s ) noexcept; // (1) C++17
bool is_socket( const std::filesystem::path& p ); // (2) C++17
bool is_socket( const std::filesystem::path& p, std::error_code& ec ) noexcept; // (3) C++17
주어진 파일 상태나 경로가 POSIX S_IFSOCK이 판정하는 것처럼 네임드 IPC 소켓인지 검사해요.
-
s.type() == file_type::socket과 동등해요.
- 2,3) 각각
is_socket(status(p))또는is_socket(status(p, ec))와 동등해요.
매개변수
s— 확인할 file statusp— 검사할 경로ec— 예외 없는 버전에서 오류 보고용 출력 매개변수
반환값
p가 가리키는 파일 또는 s가 나타내는 유형이 네임드 소켓이면 true, 아니면 false예요. 예외 없는 버전은 오류 시 false를 돌려줘요.
예외
noexcept로 표시되지 않은 오버로드는 메모리 할당이 실패하면 std::bad_alloc을 던질 수 있어요.
- 2,3) OS API 호출이 실패하면
ec에 OS 오류 코드를 설정하고, 오류가 없다면ec.clear()를 실행해요.
참고
네임드 소켓은 POSIX socket과 bind API로 만들어진 UNIX 도메인 소켓이에요. 고급 프로세스 간 통신에 쓰일 수 있어요. 특히 표준 스트림으로 데이터를 전송하는 데 쓸 수 있어요.