Pregunta Nunca entendí realmente: ¿qué es POSIX?


¿Qué es POSIX? He leído el Artículo de Wikipedia y lo leo cada vez que encuentro el término. El hecho es que nunca entendí realmente de qué se trata.

¿Alguien puede por favor explicarme explicando "la necesidad de POSIX" también?


685
2017-11-23 00:42


origen


Respuestas:


POSIX es una familia de estándares, especificada por IEEE, para aclarar y uniformizar las interfaces de programación de aplicaciones (y problemas auxiliares, como las utilidades de shell de línea de comandos) proporcionadas por los sistemas operativos Unix-y. Cuando escribe sus programas para confiar en los estándares POSIX, puede estar seguro de que podrá transferirlos fácilmente a través de una gran familia de derivados de Unix (¡incluido Linux, pero no limitado a él!); Si utiliza alguna API de Linux que no esté estandarizada como parte de Posix, tendrá más dificultades si quiere exportar ese programa o biblioteca a otros sistemas Unix-y (por ejemplo, MacOSX) en el futuro.


467
2017-11-23 00:47



Las cosas más importantes POSIX 7 define

  1. API C

    Muy extiende ANSI C con cosas como:

    • más operaciones de archivo: mkdir, dirname, symlink, readlink, link (enlaces duros), poll, sync
    • proceso e hilos: fork, execl, pipe, semaforos sem_*, memoria compartida (shm_*), kill, parámetros de programación (nice, sched_), sleep
    • redes
    • expresiones regulares
    • gestión de memoria avanzada: mmap, mlock, mprotect, madvise

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

    Existen muchas llamadas al sistema Linux para implementar una función API POSIX C específica y cumplir con Linux, p. sys_write, sys_read, ...

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

  2. Utilidades de CLI

    P.ej.: cd, ls, echo, ...

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

    Implementación principal de escritorio Linux: Coreutils de GNU para los pequeños, proyectos GNU separados para los grandes: sed, grep, awk, ... Algunas utilidades CLI son implementadas por Bash como incorporados.

  3. Lenguaje de shell

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

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

  4. Variables de entorno

    P.ej.: HOME, PATH.

  5. Estado de salida del programa

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

    POSIX agrega:

  6. Expresión regular

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

    Esos son implementados por las funciones de API de C, y se utilizan en todas las utilidades de CLI, p. grep acepta BRE por defecto, 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 puede usar como back-end.

  7. Estrutura de directorio

    P.ej.: /dev/null, /tmp

    El Linux FHS extiende en gran medida POSIX.

  8. Nombres de archivos

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

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

  9. Convenciones API de utilidad de línea de comando

    No obligatorio, utilizado por POSIX, pero casi en ninguna otra parte, notablemente no en GNU. Pero es cierto, es demasiado restrictivo, p. solo banderas de una sola letra (p. -a), no hay versiones largas de guiones dobles (p. --all)

    Algunas convenciones ampliamente utilizadas:

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

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

¿Quién se ajusta a POSIX?

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

  • OS X (Apple) X representa tanto 10 como UNIX. Fue el primer sistema POSIX de Apple, lanzado alrededor de 2001. Ver 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 control de conformidad.

Ver el página wiki.

Windows

Windows implementó POSIX en algunas de sus distribuciones profesionales.

Como era una característica opcional, los programadores no podían confiar en ella para la mayoría de las aplicaciones de usuario final.

La compatibilidad quedó obsoleta en Windows 8:

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

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

Cygwin es un conocido proyecto de terceros de GPL que "proporciona una funcionalidad sustancial de API POSIX" para Windows, pero requiere que "reconstruyas tu aplicación desde el origen si quieres que se ejecute en Windows". MSYS2 es un proyecto relacionado que parece agregar más funcionalidad además de Cygwin.

Androide

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

Nivel de bonificación

los Base estándar de Linux extiende aún más POSIX.

Use los índices que no son marcos, son mucho más legibles y buscables: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Obtenga una versión completa comprimida de las páginas HTML para grepping: ¿Hay una lista de API / funciones POSIX?


346
2017-08-06 21:03



POSIX es:

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

Básicamente fue un conjunto de medidas para aliviar el dolor del desarrollo y el uso de diferentes sabores 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.


60
2017-11-23 00:44



Déjame dar la explicación grosera "no oficial".

POSIX es un conjunto de estándares que intenta distinguir los sistemas "UNIX" y de tipo UNIX de aquellos que son incompatibles con ellos. Fue creado por el gobierno de los EE. UU. Para fines de adquisición. La idea era que las compras federales de EE. UU. Necesitaban una forma de especificar legalmente los requisitos para varios tipos de ofertas y contratos de una manera que podría utilizarse para excluir sistemas a los que una determinada base de códigos o personal de programación NO sería portátil.

Desde que POSIX fue escrito post facto ... para describir un conjunto de sistemas de competencia vagamente similares ... NO fue escrito de una manera que pudiera ser implementada.

Así que, por ejemplo, la NT de Microsoft se escribió con suficiente cumplimiento con POSIX para calificar para algunas ofertas ... a pesar de que el subsistema POSIX era esencialmente inútil en términos de portabilidad práctica y compatibilidad con sistemas UNIX.

Varios otros estándares para UNIX se han escrito a lo largo de las décadas. Cosas como el SPEC1170 (especificó oncecientas setenta llamadas a funciones que tuvieron que ser implementadas de manera compatible) y varias encarnaciones del SUS (especificación única de UNIX).

En su mayor parte, estos "estándares" han sido inadecuados para cualquier aplicación técnica práctica. Existen más para la argumentación, disputas legales y otras razones disfuncionales.


37
2017-11-23 02:55



POSIX es un conjunto de estándares presentados por IEEE y The Open Group que describe cómo funcionaría un Unix ideal. Los programadores, usuarios y administradores pueden familiarizarse con el documento POSIX y esperar que Unix con reclamos POSIX brinde todas las instalaciones estándar mencionadas.

Dado que cada Unix hace las cosas un poco diferente - Solaris, Mac OS X, IRIX, BSD y Linux tienen sus peculiaridades - POSIX es especialmente útil para aquellos en la industria, ya que define un entorno estándar para operar. Por ejemplo, la mayoría de las funciones en la biblioteca C se basan en POSIX; un programador puede, por lo tanto, usar uno en su aplicación y esperar que se comporte igual en la mayoría de las Unidades.

Sin embargo, las áreas divergentes de Unix suelen ser el foco, en lugar de las estándar.

Lo bueno de POSIX es que puedes leerlo tú mismo:

Las especificaciones de base de grupo abierto, edición 7

El Issue 7 se conoce como POSIX.1-2008, y hay cosas nuevas allí; sin embargo, Google-fu para POSIX.1 y tal le permitirá ver todo el historial detrás de lo que es Unix.


28
2017-11-23 00:46



POSIX es un estándar para sistemas operativos que se suponía que haría más fácil escribir software multiplataforma. Es especialmente importante en el mundo de Unix.


23
2017-11-23 00:44



En 1985, individuos de compañías en toda la industria de la computación   se unieron para desarrollar el POSIX (sistema operativo portátil)   Estándar de interfaz para entornos informáticos), que se basa en gran medida   en la definición de interfaz del sistema V de UNIX (SVID) y otras anteriores   esfuerzos de estandarización. Estos esfuerzos fueron estimulados por los EE. UU.   gobierno, que necesitaba un entorno informático estándar para minimizar   sus costos de capacitación y adquisición. Lanzado en 1988, POSIX es un grupo   de los estándares IEEE que definen API, shell y interfaces de utilidad   para un sistema operativo. Aunque está dirigido a sistemas tipo UNIX, el   los estándares pueden aplicarse a cualquier sistema operativo compatible. Ahora que estos   los estándares han ganado aceptación, los desarrolladores de software pueden   desarrollar aplicaciones que se ejecutan en todas las versiones conformes de UNIX,   Linux y otros sistemas operativos.

Del libro: Una guía práctica para Linux


3
2018-04-27 19:14



Este estándar proporciona una base común para sistemas operativos tipo Unix. Especifica cómo debería funcionar el shell, qué esperar de comandos como ls y grep, y una cantidad de bibliotecas C que los autores de C pueden esperar tener disponibles.

Por ejemplo, las tuberías que usan los usuarios de la línea de comandos para enhebrar los comandos se especifican en detalle aquí, lo que significa que la función popen (pipe open) de C es POSIX estándar, no ISO C estándar.


2
2018-04-14 10:56