Tanto Linux como el espacio de usuario GNU (glibc) parecen tener varios errores "WONTFIX", es decir, errores que las partes responsables han declarado no estar dispuestos a corregir a pesar de violar claramente los requisitos de ISO C y/o POSIX, pero yo No estoy al tanto de ningún recurso para programadores que enumere dichos errores y sugerencias para evitarlos.¿Qué son los errores de WONTFIX en GNU/Linux y cómo solucionarlos?
Éstos son algunos que vienen a la mente:
- El Linux UDP
select
error:select
(e interfaces relacionadas) bandera de un descriptor de archivo de socket UDP listo para leer tan pronto como un paquete ha sido recibido, sin confirmando la suma de comprobación. En los siguientesrecv
/read
/etc., Si la suma de comprobación no es válida, la llamada se bloqueará. Para solucionar este problema, es necesario configurar siempre los sockets UDP en modo no bloqueante y tratar con la condiciónEWOULDBLOCK
. Si mal no recuerdo, MaraDNS fue el primer proyecto notable afectado por este error y el primero en quejarse (sin éxito) para que lo arreglaran. Nota: Como señaló Martin v. Löwis, aparentemente este error ya se solucionó. Las soluciones temporales probablemente solo sean necesarias si necesita admitir versiones realmente desactualizadas de Linux. - La familia
printf
en la biblioteca C de GNU trata erróneamente argumentos como%s
como cadenas de caracteres multibyte en lugar de cadenas de bytes cuando se especifica una precisión de campo (como en%.3s
), lo que puede causar una salida truncada. No conozco ninguna solución excepto reemplazar todo el subsistemaprintf
(o simplemente no usar la familia de funcionesprintf
con cadenas de bytes de caracteres no multibyte, pero esto puede ser problemático si desea procesar cadenas de páginas de códigos heredadas usandosnprintf
mientras está en un UTF -8 configuración regional). -
Incorrecto(No puedo encontrar las referencias para este y tal vez me equivoque El más cercano que puedo encontrar es el tema deerrno
códigos de resultado para ciertas llamadas de sistema (no recuerdo cuales son correctas). Por lo general, estos son fáciles de verificar si solo lee las páginas Man de GNU/Linux y las compara con el estándar.ENOTSUP
yEOPNOTSUP
tener el mismo valor;. Ver PDTR 24715
¿Cuáles son algunos más errores y soluciones que podamos. ? añadir a esta lista Mis objetivos al hacer esta pregunta son:
- para construir una lista más completa de tales errores de manera que los nuevos y experimentados programadores pueden convertirse rápidamente en conocer los posibles problemas que pueden surgir cuando se ejecuta una intended- programa para ser portátil en GNU/Linux.
- Aprovechar el cerebro colectivo SO para idear soluciones estándar inteligentes y discretas para tantos errores como sea posible, en lugar de que todos tengan que inventar sus propios métodos alternativos después de ser picados, y posiblemente hacerlo de maneras menos óptimas, feas o hackosas, o peor aún, de maneras que rompen el apoyo para sistemas más conformes.
Quien haya votado para cerrar, por favor explique. No veo cómo podría estar fuera de tema ya que pregunté sobre soluciones alternativas que son claramente un tema de programación. Admito que es un poco argumentativo que sería una razón separada para proponer el cierre, pero si el enfoque es una búsqueda constructiva de soluciones que aborden estos problemas de manera discreta en lugar de simplemente una censura, creo que es una pregunta que vale la pena. –
¿Qué errores? Si Linux no cumple con los estándares, es claramente el estándar que está mal. –
@R .. - Es una broma. pero no me sorprendería si hay personas que realmente piensan de esta manera. Y por lo que vale, creo que esta es una buena pregunta. –