Por que a maioria das distribuições Linux não é compatível com POSIX? Eu vi em muitos lugares que eles não são (por exemplo , principalmente compatível com POSIX ), mas não houve nenhuma explicação real para fazer backup disso.
Existe algo que a biblioteca C e/ou ferramentas possam fazer para contornar isso (ou seja, nenhuma modificação no próprio kernel)? O que precisa ser feito?
A suposta duplicata está perguntando qual distribuição Linux é compatível com POSIX; isso está perguntando por que a maioria das distribuições Linux não são compatíveis com POSIX. Estou pedindo detalhes específicos (ou seja, alguma função ou comando não é compatível), não as razões pelas quais as distribuições específicas não (tentam) ser certificadas.
Este comentário de @PhilipCouling (obrigado!) explica bem:
Conformidade e certificação são assuntos diferentes. As respostas apontam para o custo da (re)certificação que é irrelevante para o tema da (não)conformidade.
O POSIX não especifica uma interface de kernel, então o Linux é amplamente irrelevante. Ele especifica a interface do sistema, várias ferramentas e extensões para o padrão C, que podem existir em cima de qualquer kernel. Não é compatível com POSIX no sentido de não ser mencionado, ou é compatível com POSIX no sentido de não ser mencionado, a seu critério.
Existem distribuições Linux certificadas para UNIX® , portanto, certamente é possível ter sistemas operacionais totalmente compatíveis com POSIX usando Linux. O EulerOS da Huawei é aquele que tem e que você pode comprar se quiser. A maior parte do restante não pagou seu dinheiro e, portanto, não tem acesso ao conjunto de testes para verificar a conformidade.
Se eles iriam satisfazê-lo na prática não está claro, mas alguns se esforçam mais do que outros. Suspeito que alguns dos BSDs estejam mais próximos do que a maioria das distribuições Linux, mas isso é um palpite: por exemplo, sei que
execlp("cd", "/", NULL)
falha na maioria das distribuições Linux, mas funciona em muitos BSDs e é exigido pelo POSIX.