首頁 >後端開發 >C++ >如何從 POSIX 檔案描述符構造 C fstream?

如何從 POSIX 檔案描述符構造 C fstream?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-14 11:58:13458瀏覽

How Can I Construct a C   fstream from a POSIX File Descriptor?

從 POSIX 檔案描述子建構 C fstream

問題:
直接從 POSIX 檔案描述子建構 fstream 物件可以是C語言具有挑戰性.

解決方案:

Libstd

對於libstdc ,沒有標準方法可以做到這一點。但是,libstdc 為 fstream 提供了一個非標準建構函數,它接受檔案描述符輸入。

範例:

#include <ext/stdio_filebuf.h>
using namespace std;

int main() {
  int posix_handle = open("file.txt", O_RDONLY);  // Open a file with POSIX handle
  __gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, ios::in);  // Create stdio_filebuf from POSIX handle
  ifstream ifs(&filebuf);  // Create ifstream from stdio_filebuf

  // Read from the file
}

Microsoft Visual C

Microsoft Visual C 也為ifstream 提供了一個接受FILE 指標的非標準構造函數。您可以呼叫 _fdopen 從 POSIX 檔案描述符中取得 FILE

範例:

#include <cstdio>
#include <fstream>
using namespace std;

FILE *_file = fopen("file.txt", "r");  // Open a file with C file handle
ifstream ifs(_fdopen(_fileno(_file), "r"));  // Create ifstream from FILE*

// Read from the file

注意:

這些非- 標準建構函式可能不適用於所有 C 實作。建議您查看文件以了解您的具體實現。

以上是如何從 POSIX 檔案描述符構造 C fstream?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn