>백엔드 개발 >C++ >POSIX 파일 설명자에서 C fstream을 만드는 방법은 무엇입니까?

POSIX 파일 설명자에서 C fstream을 만드는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-20 17:45:14446검색

How to Create a C   fstream from a POSIX File Descriptor?

POSIX 파일 설명자에서 C fstream을 생성하는 방법은 무엇입니까?

POSIX 파일 설명자에서 C fstream을 생성하려면 고려해야 합니다. 간단해 보이지만 구현은 복잡할 수 있습니다.

표준 C 접근 방식

표준 C 라이브러리는 파일 설명자에서 fstream을 생성하는 직접적인 방법을 제공하지 않습니다. 그러나 libstdc와 같은 일부 구현에서는 파일 설명자 또는 FILE* 포인터를 입력으로 받아들이는 비표준 확장 생성자를 제공할 수 있습니다.

Libstdc 솔루션

Libstdc는 __gnu_cxx:: std::basic_streambuf에서 상속되고 스트림을 연결하는 생성자가 있는 stdio_filebuf 클래스 템플릿 POSIX 파일 설명자를 사용하는 버퍼:

stdio_filebuf (int __fd, std::ios_base::openmode __mode, size_t __size=static_cast< size_t >(BUFSIZ))

이 생성자를 사용하는 예:

#include <ext/stdio_filebuf.h> // Libstdc++ extension
#include <iostream>

int main() {
    ...

    int posix_handle = ...;

    __gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, std::ios::in);
    istream is(&filebuf);

    ...

Microsoft Visual C 솔루션

Microsoft Visual C는 비표준 FILE* 포인터를 받아들이는 ifstream 생성자:

explicit basic_ifstream(_Filet *_File);

이 생성자를 다음과 함께 사용할 수 있습니다. _fdopen은 파일 설명자에서 ifstream을 생성합니다:

#include <cstdio>
#include <iostream>

int main() {
    ...

    int posix_handle = ...;

    FILE* c_stream = _fdopen(posix_handle, "r");
    ifstream ifs(c_stream);

    ...

위 내용은 POSIX 파일 설명자에서 C fstream을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.