¿Hay alguna diferencia entre el texto y el modo binario en el acceso a archivos?

¿Hay alguna diferencia si abro un archivo en modo de texto en lugar de en modo binario? Porque leí que UNIX y Linux no hacen distinción entre archivos de texto y binarios.

No hay diferencia en Linux (al menos en sistemas de archivos nativos como Ext4 y en la mayoría de los otros sistemas de archivos, con la habitual GNU libc).

Quizás algunos sistemas de archivos extraños podrían tener una bandera específica para abrir archivos binarios o de texto de manera diferente. No conozco tal sistema de archivos. Tal vez podría codificar algún sistema de archivos FUSE haciendo la distinción, tal vez con algún hack adicional alrededor de fopen dentro de una libc personalizada extrañamente

Sin embargo, el estándar C99 (al menos la página 271, §7.19.5.3 del borrador n1256) menciona explícitamente el modo de texto contra binario, por lo que su progtwig sería más fácil de portar a otros sistemas (como Windows) si cumple con el estándar.

Así que mi punto es que quizás quieras intentar pasar una cadena de modo a fopen que diferencie el modo binario frente al modo texto. (Estoy de acuerdo en que no hago eso muy a menudo). No va a doler

La página del manual de Linux fopen (3) dice explícitamente:

La cadena de modo también puede incluir la letra ‘b’ como último carácter o como un carácter entre los caracteres en cualquiera de las cadenas de dos caracteres descritas anteriormente. Esto es estrictamente para compatibilidad con C89 y no tiene ningún efecto; La ‘b’ se ignora en todos los sistemas que cumplen con POSIX, incluido Linux. (Otros sistemas pueden tratar los archivos de texto y los archivos binarios de manera diferente, y agregar la ‘b’ puede ser una buena idea si hace E / S a un archivo binario y espera que su progtwig se pueda portar a entornos que no sean UNIX).

Por supuesto, el syscall abierto (2) no tiene ninguna forma de transmitir un indicador de modo. (Necesitarás algo de ioctl privado (2) probablemente)