POSIX учебник
Начало работы с POSIX
Поиск…
Версии
Версия | стандарт | Год выпуска |
---|---|---|
POSIX.1 | IEEE Std 1003.1-1988 | 1988-01-01 |
POSIX.1b | IEEE Std 1003.1b-1993 | 1993-01-01 |
POSIX.1c | IEEE Std 1003.1c-1995 | 1995-01-01 |
POSIX.2 | IEEE Std 1003.2-1992 | 1992-01-01 |
POSIX.1-2001 | IEEE Std 1003.1-2001 | 2001-12-06 |
POSIX.1-2004 | IEEE Std 1003.1-2004 | 2004-01-01 |
POSIX.1-2008 | IEEE Std 1003.1-2008 (« Базовые спецификации, выпуск 7 ») | 2008-12-01 |
POSIX.1-2013 | IEEE Std 1003.1-2013 | 2013-04-19 |
POSIX.1-2016 | IEEE Std 1003.1-2016 | 2016-09-30 |
Что такое POSIX?
POSIX означает « Portable Operating System Interface » и определяет набор стандартов для обеспечения совместимости между различными вычислительными платформами. Текущей версией стандарта является IEEE 1003.1 2016, и к нему можно получить доступ из спецификации OpenGroup POSIX . Предыдущие версии включают POSIX 2004 и POSIX 1997 . Версия POSIX 2016 - это, по сути, POSIX 2008 плюс исправления (также был выпущен POSIX 2013).
POSIX определяет различные инструменты интерфейсов, команд и API для UNIX-подобных операционных систем и других.
В рамках стандартизации POSIX рассматриваются следующие:
- Системный интерфейс (функции, макросы и внешние переменные)
- Командный интерпретатор или Shell (утилита sh )
- Утилиты (например, больше , cat , ls )
Вне области POSIX:
- Интерфейсы СУБД
- Графические интерфейсы
- Переносимость двоичного кода
Привет, мир
Простая программа Hello, World
без проверки ошибок:
#include <unistd.h> /* For write() and STDOUT_FILENO */
#include <stdlib.h> /* For EXIT_SUCCESS and EXIT_FAILURE */
int main(void) {
char hello[] = "Hello, World\n";
/* Attempt to write `hello` to standard output file */
write(STDOUT_FILENO, hello, sizeof(hello) - 1);
return EXIT_SUCCESS;
}
И с проверкой ошибок:
#include <unistd.h> /* For write() and STDOUT_FILENO */
#include <stdlib.h> /* For EXIT_SUCCESS and EXIT_FAILURE */
int main(void) {
char hello[] = "Hello, World\n";
ssize_t ret = 0;
/* Attempt to write `hello` to standard output file */
ret = write(STDOUT_FILENO, hello, sizeof(hello) - 1);
if (ret == -1) {
/* write() failed. */
return EXIT_FAILURE;
} else if (ret != sizeof(hello) - 1) {
/* Not all bytes of `hello` were written. */
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Компиляция и запуск
Если код, показанный выше (любая версия), хранится в файле hello.c
, вы можете скомпилировать код в hello
программы, используя либо c99
либо make
. Например, в строго совместимом с POSIX режиме вы можете теоретически компилировать и запускать программу, используя:
$ make hello
c99 -o hello hello.c
$ ./hello
Hello, World
$
Большинство реальных make
реализации будут использовать другой компилятор (возможно cc
, возможно , gcc
, clang
, xlc
или другое имя), и многие будут использовать больше возможностей для компилятора. Очевидно, что вы можете просто ввести команду , которая make
выполняет непосредственно в командной строке.