O que é o POSIX? Eu li o artigo da Wikipedia e o leio toda vez que encontro o termo. O fato é que nunca realmente entendi o que é.
Alguém pode me explicar explicando "a necessidade do POSIX" também?
O que é o POSIX? Eu li o artigo da Wikipedia e o leio toda vez que encontro o termo. O fato é que nunca realmente entendi o que é.
Alguém pode me explicar explicando "a necessidade do POSIX" também?
Respostas:
O POSIX é uma família de padrões, especificados pelo IEEE , para esclarecer e uniformizar as interfaces de programação de aplicativos (e problemas auxiliares, como utilitários de shell de linha de comando) fornecidos pelos sistemas operacionais Unix-y. Quando você escreve seus programas para confiar nos padrões POSIX, pode ter certeza de que os pode transportar facilmente entre uma grande família de derivativos Unix (incluindo Linux, mas não limitado a ele!); se e quando você usar alguma API do Linux que não seja padronizada como parte do Posix, será mais difícil se e quando quiser portar esse programa ou biblioteca para outros sistemas Unix-y (por exemplo, MacOSX) no futuro.
Microsoft's market share on desktops, at least, makes it "what the world follows"
- Interessante notar o quanto as coisas mudaram desde que este comentário a partir de 2009 :)
As coisas mais importantes que o POSIX 7 define
Estende bastante o ANSI C com coisas como:
mkdir
, dirname
, symlink
, readlink
, link
(hardlinks), poll()
, stat
, sync
,nftw()
fork
, execl
, wait
, pipe
, semaphors sem_*
, memória compartilhada ( shm_*
), kill
, parâmetros de programação ( nice
, sched_*
), sleep
, mkfifo
,setpgid()
socket()
mmap
, mlock
, mprotect
, madvise
,brk()
reg*
)Essas APIs também determinam os conceitos subjacentes do sistema dos quais dependem, por exemplo, fork
exigem o conceito de um processo.
Muitas chamadas de sistema Linux existem para implementar uma função API específica POSIX C e tornar compatível com Linux, por exemplo sys_write
, sys_read
... Muitos desses syscalls também têm extensões específicas do Linux no entanto.
Principal implementação do desktop Linux: glibc, que em muitos casos apenas fornece um invólucro superficial para chamadas do sistema.
Por exemplo: cd
, ls
, echo
, ...
Muitos utilitários são front-ends diretos do shell para uma função correspondente da API C, por exemplo mkdir
.
Maior Linux aplicação de desktop: GNU Coreutils para os pequenos, projetos GNU separadas para os grandes: sed
, grep
, awk
, ... Alguns utilitários CLI são implementadas por Bash como built-ins .
Por exemplo, a=b; echo "$a"
Grande implementação de desktop Linux: GNU Bash .
Por exemplo: HOME
, PATH
.
PATH
a semântica de pesquisa é especificada , incluindo como as barras impedem a PATH
pesquisa .
O ANSI C diz 0
ou EXIT_SUCCESS
para o sucesso, EXIT_FAILURE
para a falha e deixa a implementação restante definida.
O POSIX adiciona:
126
: comando encontrado, mas não executável.
127
: comando não encontrado.
> 128
: terminado por um sinal.
Mas o POSIX parece não especificar a 128 + SIGNAL_ID
regra usada pelo Bash: /unix/99112/default-exit-code-when-process-is-terminated
Existem dois tipos: BRE (Básico) e ERE (Estendido). O básico foi descontinuado e mantido apenas para não quebrar as APIs.
Essas são implementadas pelas funções da API C e usadas nos utilitários da CLI, por exemplo, grep
aceitam BREs por padrão e EREs com -E
.
Por exemplo: echo 'a.1' | grep -E 'a.[[:digit:]]'
Grande implementação do Linux: glibc implementa as funções em regex.h que programas como grep
podem usar como back-end.
Por exemplo: /dev/null
,/tmp
O Linux FHS estende bastante o POSIX.
/
é o separador de caminhoNUL
não pode ser usado.
é cwd
, ..
paia-zA-Z0-9._-
Veja também: o que é conformidade posix para sistema de arquivos?
Convenções de API do utilitário de linha de comando
Não obrigatório, usado pelo POSIX, mas quase em nenhum outro lugar, principalmente no GNU. Mas é verdade que é muito restritivo, por exemplo, apenas sinalizadores de letra única (por exemplo -a
), sem versões longas de hífen duplo (por exemplo --all
).
Algumas convenções amplamente usadas:
-
significa stdin onde um arquivo é esperado--
termina sinalizadores, por exemplo, ls -- -l
para listar um diretório chamado-l
Consulte também: Existem padrões para opções e argumentos de linha de comando do Linux?
"ACLs POSIX" (Listas de controle de acesso), por exemplo, usadas como back-end para setfacl
.
Isso foi retirado, mas foi implementado em vários sistemas operacionais, inclusive no Linux comsetxattr
.
Quem está em conformidade com o POSIX?
Muitos sistemas seguem o POSIX de perto, mas poucos são realmente certificados pelo Open Group, que mantém o padrão. Os certificados notáveis incluem:
A maioria das distribuições Linux é muito compatível, mas não é certificada porque não deseja pagar a verificação de conformidade. O K-UX da Inspur e o EulerOS da Huawei são dois exemplos certificados.
A lista oficial de sistemas certificados pode ser encontrada em: https://www.opengroup.org/openbrand/register/ e também na página wiki .
janelas
O Windows implementou o POSIX em algumas de suas distribuições profissionais.
Como era um recurso opcional, os programadores não podiam confiar nele para a maioria dos aplicativos do usuário final.
O suporte foi preterido no Windows 8:
Em 2016, uma nova API oficial semelhante ao Linux chamada "Windows Subsystem for Linux" foi anunciada. Ele inclui chamadas de sistema Linux, ELF em execução, partes do /proc
sistema de arquivos, Bash, GCC (TODO provavelmente glibc?) apt-get
E muito mais: https://channel9.msdn.com/Events/Build/2016/P488, por isso acredito que permitirá que o Windows execute grande parte, se não todos, do POSIX. No entanto, ele é focado em desenvolvedores / implantação em vez de usuários finais. Em particular, não havia planos para permitir o acesso à GUI do Windows.
Visão geral histórica da compatibilidade oficial do Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/
Cygwin é um projeto de terceiros da GPL bem conhecido por "fornecer uma funcionalidade substancial da API POSIX" para Windows, mas requer que você "reconstrua seu aplicativo a partir da fonte, se quiser que ele seja executado no Windows". O MSYS2 é um projeto relacionado que parece adicionar mais funcionalidades ao Cygwin.
Android
O Android tem sua própria biblioteca C (Bionic), que não oferece suporte completo ao POSIX a partir do Android O: O Android POSIX é compatível?
Nível de bônus
A base padrão do Linux estende ainda mais o POSIX.
Use os índices que não são de quadros, eles são muito mais legíveis e pesquisáveis: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
Obtenha uma versão compactada completa das páginas HTML para grepping: Onde está a lista das funções da API do POSIX C?
POSIX é:
POSIX (pronunciado / ˈpɒzɪks /) ou "Interface do sistema operacional portátil [para Unix]" 1 é o nome de uma família de padrões relacionados especificados pelo IEEE para definir a interface de programação de aplicativos (API), juntamente com interfaces de shell e utilitários para software compatível com variantes do sistema operacional Unix, embora o padrão possa ser aplicado a qualquer sistema operacional.
Basicamente, foi um conjunto de medidas para aliviar a dor do desenvolvimento e uso de diferentes tipos de UNIX por ter uma API e utilitários comuns (principalmente). A conformidade limitada com o POSIX também se estendeu a várias versões do Windows.
Deixe-me dar a explicação grosseira "não oficial".
POSIX é um conjunto de padrões que tenta distinguir sistemas "UNIX" e do tipo UNIX daqueles incompatíveis com eles. Foi criado pelo governo dos EUA para fins de compras. A idéia era que as compras federais dos EUA precisassem de uma maneira de especificar legalmente os requisitos para vários tipos de ofertas e contratos de uma maneira que pudesse ser usada para excluir sistemas para os quais uma base de código ou equipe de programação existente NÃO seria portátil.
Desde que o POSIX foi escrito post facto ... para descrever um conjunto pouco semelhante de sistemas concorrentes ... NÃO foi escrito de uma maneira que pudesse ser implementada.
Assim, por exemplo, o NT da Microsoft foi escrito com conformidade POSIX suficiente para se qualificar para alguns lances ... mesmo que o subsistema POSIX fosse essencialmente inútil em termos de portabilidade prática e compatibilidade com sistemas UNIX.
Vários outros padrões para o UNIX foram escritos ao longo das décadas. Coisas como o SPEC1170 (mil e setecentas e setenta chamadas de funções que precisavam ser implementadas de forma compatível) e várias encarnações do SUS (especificação UNIX única).
Na maioria das vezes, esses "padrões" são inadequados para qualquer aplicação técnica prática. Eles existem mais por argumentação, disputa legal e outras razões disfuncionais.
O POSIX é um padrão para sistemas operacionais que deveria facilitar a gravação de software de plataforma cruzada. É um negócio especialmente importante no mundo do Unix.
POSIX é um conjunto de padrões apresentados pelo IEEE e pelo The Open Group que descreve como um Unix ideal operaria. Programadores, usuários e administradores podem se familiarizar com o documento POSIX e esperar que um Unix com reclamação POSIX forneça todos os recursos padrão mencionados.
Como todo Unix faz as coisas de maneira um pouco diferente - Solaris, Mac OS X, IRIX, BSD e Linux todos têm suas peculiaridades - o POSIX é especialmente útil para os profissionais do setor, pois define um ambiente padrão para operar. Por exemplo, a maioria das funções na biblioteca C é baseada em POSIX; um programador pode, portanto, usar um em seu aplicativo e esperar que ele se comporte da mesma forma na maioria dos Unices.
No entanto, as áreas divergentes do Unix são tipicamente o foco, e não as áreas padrão.
O melhor do POSIX é que você pode lê-lo:
A edição 7 é conhecida como POSIX.1-2008, e há coisas novas por aí - no entanto, o Google-fu para POSIX.1 e isso permitirá que você veja toda a história por trás do que é o Unix.
Em 1985, indivíduos de empresas de toda a indústria de computadores se uniram para desenvolver o padrão POSIX (Interface de sistema operacional portátil para ambientes de computador), que se baseia amplamente no SVID (UNIX System V Interface Definition) e em outros esforços anteriores de padronização. Esses esforços foram estimulados pelo governo dos EUA, que precisava de um ambiente de computação padrão para minimizar seus custos de treinamento e compras. Lançado em 1988, o POSIX é um grupo de padrões IEEE que definem as interfaces API, shell e utilidade para um sistema operacional. Embora sejam voltados para sistemas do tipo UNIX, os padrões podem ser aplicados a qualquer sistema operacional compatível. Agora que esses padrões foram aceitos, os desenvolvedores de software podem desenvolver aplicativos executados em todas as versões compatíveis do UNIX, Linux,
Do livro: Um guia prático para Linux
Posix é mais como um sistema operacional, é um "padrão do sistema operacional". Você pode imaginá-lo como um sistema operacional imaginário, que na verdade não existe, mas possui uma documentação. Estes documentos são o "padrão posix", definido pelo IEEE, que é a grande organização padrão dos EUA. Os sistemas operacionais que implementam esta especificação são "compatíveis com Posix".
As regulamentações governamentais preferem soluções compatíveis com Posix em seus investimentos, portanto, estar em conformidade com Posix tem uma vantagem financeira significativa, principalmente para as grandes empresas de TI dos EUA.
A recompensa por um sistema operacional ser totalmente compatível com posix, é uma garantia de que ele irá compilar e executar todos os aplicativos compatíveis com Posix sem problemas.
O Linux é o mais conhecido. OSX, Solaris, NetBSD e Windows NT também são reproduzidos aqui. Free e OpenBSD são apenas "quase" compatíveis com Posix. A conformidade posix do WinNT é apenas uma pseudo-solução para evitar essa regulamentação governamental acima.
Esse padrão fornece uma base comum para sistemas operacionais semelhantes ao Unix. Ele especifica como o shell deve funcionar, o que esperar de comandos como ls e grep e várias bibliotecas C que os autores de C podem esperar ter disponíveis.
Por exemplo, os pipes que os usuários da linha de comando usam para encadear comandos são especificados aqui em detalhes, o que significa que a função popen (pipe open) de C é padrão POSIX, não padrão ISO.
POSIX significa Interface do sistema operacional portátil e é um padrão IEEE projetado para facilitar a portabilidade do aplicativo. O POSIX é uma tentativa de um consórcio de fornecedores de criar uma única versão padrão do UNIX.
O POSIX define um conjunto de padrões para um sistema operacional ou programa. O objetivo é escrever um novo software compatível com sistemas semelhantes ao UNIX.
Por exemplo, um programa executado no Linux também pode ser compilado e executado em outros sistemas semelhantes ao UNIX, como Solaris, HP-UX e AIX, etc.
Os exemplos mais populares são GNU Bash
100% de conformidade e gawk
utilidade POSIX .
O Posix controla a interoperabilidade, portabilidade e em outras áreas, como o uso e o mecanismo do fork, permissões e padrões de sistema de arquivos como / etc, / var, / usr e assim por diante . Portanto, quando os desenvolvedores escrevem um programa em um sistema compatível com Posix, como, por exemplo, Linux, geralmente, nem sempre, é garantido que ele seja executado em outro sistema compatível com posix, como o sistema AIX da IBM ou outras variantes comerciais do Unix. O Posix é uma coisa boa de se ter, pois facilita o desenvolvimento do software para a portabilidade máxima que ele busca. Espero que esta resposta faça sentido.
Obrigado a Jed Smith & Tinkertim por apontarem meu erro - meu mal !!! :(
Uma especificação (blueprint) sobre como tornar um sistema operacional compatível com o sistema operacional UNIX tardio (que Deus o abençoe!). É por isso que o macOS e o GNU / Linux têm linhas de comando de terminal, GUIs, bibliotecas muito semelhantes, porque ambos foram projetados de acordo com o modelo POSIX.
O POSIX não informa aos engenheiros e programadores como codificar, mas o que codificar.
Alguns fatos sobre o POSIX que não são tão brilhantes.
O POSIX também é a interface de chamada do sistema ou API e tem quase 30 anos.
Ele foi projetado para acesso de dados serializados ao armazenamento local , usando computadores únicos com CPUs únicas.
A segurança não era uma preocupação importante no POSIX, levando a numerosos ataques de condição de corrida ao longo dos anos e forçando os programadores a contornar essas limitações.
Erros graves ainda estão sendo descobertos, erros que poderiam ter sido evitados com um design de API POSIX mais seguro.
O POSIX espera que os usuários emitam uma chamada síncrona por vez e aguardem seus resultados antes de emitir a próxima. Os programadores de hoje esperam emitir muitas solicitações assíncronas ao mesmo tempo para melhorar a taxa de transferência geral.
Essa API síncrona é particularmente ruim para acessar objetos remotos e na nuvem, onde a alta latência é importante.