/ / Aucun indicateur O_BINARY et O_TEXT sous Linux? - c, fichier

Aucun indicateur O_BINARY et O_TEXT sous Linux? - c, fichier

Lors de l’utilisation d’IO au niveau système sous Linux, j’ai remarqué que le compilateur reconnaissait la O_RDONLY et O_RDWR drapeaux, mais il n’a aucune idée du sens de la phrase. O_BINARY et O_TEXT drapeaux.

Est-ce une chose Linux?

Réponses:

21 pour la réponse № 1

Linux, et à peu près toutes les saveurs d'Unix pourcette matière ne fait pas la différence entre les fichiers binaires et les fichiers texte. Ainsi, il n’existe pas de constantes standard portant ce nom. Vous pouvez définir manuellement les constantes sur zéro si vous souhaitez les inclure dans votre code à des fins de portabilité.

http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/2007-03/msg00147.html


2 pour la réponse № 2

Au niveau du langage C et de sa bibliothèque standard, il n’existe pas de O_BINARY et O_TEXT drapeaux. Le mode binaire ou texte est sélectionné en ajoutant le b spécificateur du paramètre mode de fopen une fonction. Le spécificateur lui-même est, bien sûr, pris en charge par toutes les implémentations C, mais sur les plateformes POSIX, ce spécificateur n'a aucun effet: selon les spécifications POSIX, le mode texte est identique au mode binaire.

Sans surprise, si vous approfondissez le niveau des fonctions d’E / S Unix non standard spécifiques à une plate-forme, vous découvrirez qu’ils n’ont aucune connaissance de cette distinction texte / binaire.


1 pour la réponse № 3

C’est une chose * nix. Les systèmes d’exploitation * nix ne font pas de conversion de saut de ligne automatique pour les E / S sur des fichiers "texte", les drapeaux O_TEXT et O_BINARY n’auraient donc aucun sens.


0 pour la réponse № 4

Il n’ya pas une différence au niveau du système d’exploitation entrefichier binaire et texte sous Unix. Les fichiers texte ont juste un contenu restreint. Cela vaut également pour Windows, mais les conventions utilisées par C pour les fins de ligne sont les mêmes que celles utilisées par Unix, tandis que Windows utilise la paire CR / LF (et un marqueur de fin de fichier explicite dans certains contextes, mais le traitement de ce n'était pas cohérent même dans les programmes système la dernière fois que j'ai vérifié), donc une cartographie est nécessaire pour respecter les conventions prescrites par C.


0 pour la réponse № 5

Windows utilise rn pour les fins de ligne, Linux (etautres Unix-alikes) utilisent juste n. Dans Windows, la lecture de O_BINARY vous donne les données brutes, éventuellement des fins de ligne impaires et autres, tandis que O_TEXT normalise les fins de ligne, de sorte que votre code C ne voit qu'un seul caractère.

Sous Linux et al, il est inutile de distinguer entre texte et binaire, car les données ne comportent de toute façon qu'un seul caractère, les indicateurs ne sont donc pas nécessaires.