Saltar al contenido

¿Cuál es el significado de “POSIX”?

Este escrito ha sido aprobado por nuestros especialistas para que tengas la seguridad de la exactitud de esta reseña.

Solución:

POSIX es una familia de estándares, especificada por el IEEE, para aclarar y uniformar las interfaces de programación de aplicaciones (y cuestiones auxiliares, como las utilidades de shell de línea de comandos) proporcionadas por los sistemas operativos Unix-y. Cuando escribe sus programas para que se basen en los estándares POSIX, puede estar bastante seguro de poder portarlos fácilmente entre una gran familia de derivados de Unix (incluido Linux, ¡pero no limitado a él!); si usa alguna API de Linux que no está estandarizada como parte de Posix, tendrá más dificultades si desea portar ese programa o biblioteca a otros sistemas Unix-y (por ejemplo, MacOSX) en el futuro.

Las cosas más importantes que define POSIX 7

  1. API C

    Amplía enormemente ANSI C con cosas como:

    • más operaciones de archivo: mkdir, dirname, symlink, readlink, link (enlaces duros), poll(), stat, sync, nftw()
    • proceso e hilos: fork, execl, wait, pipe, semaforas sem_*, memoria compartida (shm_*), kill, programación de parámetros (nice, sched_*), sleep, mkfifo, setpgid()
    • redes: socket()
    • gestión de la memoria: mmap, mlock, mprotect, madvise, brk()
    • utilidades: expresiones regulares (reg*)

    Esas API también determinan los conceptos subyacentes del sistema de los que dependen, p. Ej. fork requiere un concepto de proceso.

    Existen muchas llamadas al sistema Linux para implementar una función API POSIX C específica y hacer que Linux sea compatible, p. Ej. sys_write, sys_read, … Sin embargo, muchas de esas llamadas al sistema también tienen extensiones específicas de Linux.

    Implementación principal de escritorio de Linux: glibc, que en muchos casos solo proporciona una envoltura superficial para las llamadas al sistema.

  2. Utilidades CLI

    P.ej: cd, ls, echo

    Muchas utilidades son interfaces de shell directas para una función API de C correspondiente, p. Ej. mkdir.

    Implementación principal de escritorio Linux: GNU Coreutils para los pequeños, proyectos GNU separados para los grandes: sed, grep, awk, … Bash implementa algunas utilidades CLI como integradas.

  3. Lenguaje de shell

    P.ej, a=b; echo "$a"

    Implementación principal de escritorio de Linux: GNU Bash.

  4. Variables de entorno

    P.ej: HOME, PATH.

    PATH se especifica la semántica de búsqueda, incluida la forma en que las barras evitan PATH buscar.

  5. Estado de salida del programa

    ANSI C dice 0 o EXIT_SUCCESS para el éxito, EXIT_FAILURE por falla, y deja definida la implementación del resto.

    POSIX agrega:

    • 126: comando encontrado pero no ejecutable.

    • 127: Comando no encontrado.

    • > 128: terminado por una señal.

      Pero POSIX no parece especificar el 128 + SIGNAL_ID regla utilizada por Bash: https://unix.stackexchange.com/questions/99112/default-exit-code-when-process-is-terminated

  6. Expresión regular

    Hay dos tipos: BRE (básico) y ERE (extendido). Basic está en desuso y solo se mantiene para no romper las API.

    Estos se implementan mediante funciones de API C y se utilizan en todas las utilidades de CLI, p. Ej. grep acepta BRE de forma predeterminada y ERE con -E.

    P.ej: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Implementación principal de Linux: glibc implementa las funciones bajo regex.h que programas como grep se puede utilizar como backend.

  7. Estructura de directorios

    P.ej: /dev/null, /tmp

    Linux FHS amplía enormemente POSIX.

  8. Nombres de archivo

    • / es el separador de ruta
    • NUL No puede ser usado
    • . es cwd, .. padre
    • nombres de archivo portátiles
      • use como máximo 14 caracteres como máximo y 256 para la ruta completa
      • solo puede contener: a-zA-Z0-9._-

    Ver también: ¿que es el cumplimiento de posix para el sistema de archivos?

  9. Convenciones de la API de la utilidad de línea de comandos

    No es obligatorio, utilizado por POSIX, pero casi en ningún otro lugar, especialmente no en GNU. Pero true, es demasiado restrictivo, p. ej., banderas de una sola letra (p. ej. -a), no hay versiones largas con guiones dobles (p. ej. --all).

    Algunas convenciones ampliamente utilizadas:

    • - significa stdin donde se espera un archivo
    • -- termina banderas, p. ej. ls -- -l para listar un directorio llamado -l

    Consulte también: ¿Existen estándares para los parámetros y argumentos de la línea de comandos de Linux?

  10. “POSIX ACL” (listas de control de acceso), por ejemplo, como se utiliza como backend para setfacl.

    Esto se retiró pero se implementó en varios sistemas operativos, incluso en Linux con setxattr.

¿Quién se ajusta a POSIX?

Muchos sistemas siguen de cerca a POSIX, pero pocos están realmente certificados por Open Group, que mantiene el estándar. Los certificados notables incluyen:

  • OS X (Apple) X significa tanto 10 como UNIX. Fue el primer sistema POSIX de Apple, lanzado alrededor de 2001. Consulte también: ¿OSX es un sistema operativo POSIX?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

La mayoría de las distribuciones de Linux son muy compatibles, pero no están certificadas porque no quieren pagar el cheque de cumplimiento. K-UX de Inspur y EulerOS de Huawei son dos ejemplos certificados.

La lista oficial de sistemas certificados se encuentra en: https://www.opengroup.org/openbrand/register/ y también en la página wiki.

Ventanas

Windows implementó POSIX en algunas de sus distribuciones profesionales.

Dado que era una función opcional, los programadores no podían confiar en ella para la mayoría de las aplicaciones de usuario final.

El soporte quedó obsoleto en Windows 8:

  • ¿Dónde se encuentra actualmente la implementación POSIX de Microsoft Windows 7?
  • https://superuser.com/questions/495360/does-windows-8-still-implement-posix
  • Solicitud de función: https://windows.uservoice.com/forums/265757-windows-feature-suggestions/suggestions/6573649-full-posix-support

En 2016, se anunció una nueva API oficial similar a Linux llamada “Subsistema de Windows para Linux”. Incluye llamadas al sistema Linux, ELF en ejecución, partes del /proc sistema de archivos, Bash, GCC, (TODO probablemente glibc?), apt-get y más: https://channel9.msdn.com/Events/Build/2016/P488, así que creo que permitirá que Windows ejecute gran parte, si no todo, de POSIX. Sin embargo, se centra en los desarrolladores / implementación en lugar de en los usuarios finales. En particular, no había planes para permitir el acceso a la GUI de Windows.

Resumen histórico de la compatibilidad oficial de Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin es un proyecto de terceros GPL bien conocido que “proporciona una funcionalidad sustancial de la API POSIX” para Windows, pero requiere que “reconstruya su aplicación desde la fuente si desea que se ejecute en Windows”. MSYS2 es un proyecto relacionado que parece agregar más funcionalidad a Cygwin.

Androide

Android tiene su propia biblioteca C (Bionic) que no es totalmente compatible con POSIX a partir de Android O: ¿Es compatible con POSIX de Android?

Nivel de bonificación

La base estándar de Linux amplía aún más POSIX.

Utilice los índices sin marcos, son mucho más legibles y se pueden buscar: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Obtenga una versión comprimida completa de las páginas HTML para grepping: ¿Dónde está la lista de funciones de la API POSIX C?

POSIX es:

POSIX (pronunciado / ˈpɒzɪks /) o “Interfaz de sistema operativo portátil
[for Unix]”1 es el nombre de una familia de estándares relacionados especificados por el IEEE para definir la interfaz de programación de aplicaciones (API), junto con interfaces de shell y utilidades para software compatible con variantes del sistema operativo Unix, aunque el estándar puede aplicarse a cualquier sistema.

Básicamente, era un conjunto de medidas para aliviar el dolor del desarrollo y el uso de diferentes versiones de UNIX al tener una API y utilidades (en su mayoría) comunes. El cumplimiento limitado de POSIX también se extendió a varias versiones de Windows.

valoraciones y reseñas

Si aceptas, eres capaz de dejar una reseña acerca de qué le añadirías a este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *