Maison >développement back-end >C++ >Comment puis-je créer un fstream C à partir d'un descripteur de fichier POSIX ?

Comment puis-je créer un fstream C à partir d'un descripteur de fichier POSIX ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-25 16:42:09972parcourir

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

Construction d'un fstream C à partir d'un descripteur de fichier POSIX

Cette enquête présente une tâche apparemment simple qui s'avère complexe : construire un fstream C à partir d'un descripteur de fichier POSIX. La solution réside-t-elle dans une approche plus simple ou existe-t-il une bibliothèque adaptée disponible ?

La complexité du problème

Selon les experts, il n'existe pas de mécanisme C standard pour cette tâche. Cependant, certaines implémentations de la bibliothèque standard, comme libstdc , proposent des extensions non standard.

Solutions non standard

Les solutions non standard suivantes sont disponibles :

libstdc :

  • Utilise le modèle de classe __gnu_cxx::stdio_filebuf pour créer un tampon de flux de fichiers à partir d'un descripteur de fichier.
  • Exemple :
__gnu_cxx::stdio_filebuf<char> filebuf(posix_handle, std::ios::in);
istream is(&amp;filebuf);

Microsoft Visual C :

  • Utilise le constructeur ifstream non standard qui accepte un FILE* paramètre.
  • Exemple :
ifstream ifs(::_fdopen(posix_handle, "r"));

Conclusion

Bien qu'il n'existe pas de méthode C standard pour cette tâche, les extensions non standard fournis par des implémentations spécifiques offrent des solutions viables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn