POSIX (Portable Operating System Interface) — это семейство стандартов IEEE, определяющих:
Основная цель: обеспечить переносимость приложений между разными UNIX-системами.
#include <unistd.h>
// POSIX-совместимый вызов
pid_t pid = fork();
if (pid == 0) {
execl("/bin/sh", "sh", "-c", "command", (char *)NULL);
}
# POSIX-совместимый цикл
for file in *.txt; do
grep "pattern" "$file" > "${file}.out"
done
#include <pthread.h>
// Создание POSIX-совместимого потока
pthread_create(&thread, NULL, worker_func, NULL);
#!/bin/sh
# Строго POSIX-совместимый скрипт
find /var/log -name "*.log" -type f -mtime +30 -exec rm {} \;
# POSIX-совместимый Makefile
all:
$(CC) $(CFLAGS) -o program source.c
FROM alpine:latest # Используем POSIX-совместимый busybox
RUN apk add --no-cache posix-compliant-package
# Установка POSIX-совместимой оболочки
sudo apt install dash
# Проверка скрипта
checkbashisms script.sh
# Какие POSIX-возможности поддерживаются
getconf -a | grep POSIX
Характеристика | POSIX | GNU | BSD |
---|---|---|---|
Лицензия | Стандарт IEEE | GPL | BSD |
Совместимость | Строгая | Расширения | Вариации |
Оболочка | /bin/sh | bash | csh/tcsh |
POSIX — это:
Профессиональные рекомендации:
#!/bin/sh
вместо #!/bin/bash
shellcheck
(с опцией --shell=sh
)sed -i
, grep -P
) в кросс-платформенных скриптах