POSIX Samouczek
Rozpoczęcie pracy z POSIX
Szukaj…
Wersje
Wersja | Standard | Rok wydania |
---|---|---|
POSIX.1 | IEEE Std 1003.1-1988 | 01.01.1988 |
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 | 01.01.2004 |
POSIX.1-2008 | IEEE Std 1003.1-2008 (aka „ Specyfikacje podstawowe, wydanie 7 ”) | 01.12.2008 |
POSIX.1-2013 | IEEE Std 1003.1-2013 | 19.04.2013 |
POSIX.1-2016 | IEEE Std 1003.1-2016 | 30.09.2016 |
Co to jest POSIX?
POSIX oznacza „ przenośny interfejs systemu operacyjnego ” i określa zestaw standardów zapewniających kompatybilność między różnymi platformami obliczeniowymi. Obecna wersja standardu to IEEE 1003.1 2016 i jest dostępna w specyfikacji OpenGroup POSIX . Poprzednie wersje obejmują POSIX 2004 i POSIX 1997 . Edycja POSIX 2016 to zasadniczo POSIX 2008 plus errata (była też wersja POSIX 2013).
POSIX definiuje różne interfejsy narzędzi, polecenia i interfejsy API dla systemów operacyjnych typu UNIX i innych.
Następujące są uważane za objęte standaryzacją POSIX:
- Interfejs systemu (funkcje, makra i zmienne zewnętrzne)
- Interpreter poleceń lub Shell (narzędzie sh )
- Narzędzia (takie jak more , cat , ls )
Poza zakresem POSIX:
- Interfejsy DBMS
- Interfejsy graficzne
- Przenośność kodu binarnego
Witaj świecie
Prosty program Hello, World
bez sprawdzania błędów:
#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;
}
I ze sprawdzaniem błędów:
#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;
}
Kompilowanie i uruchamianie
Jeśli powyższy kod (dowolna wersja) jest przechowywany w pliku hello.c
, możesz skompilować kod w programie hello
za pomocą c99
lub make
. Na przykład, w trybie ściśle zgodnym z POSIX, możesz teoretycznie skompilować i uruchomić program przy użyciu:
$ make hello
c99 -o hello hello.c
$ ./hello
Hello, World
$
Większość rzeczywistych implementacji make
używa innego kompilatora C (być może cc
, być może gcc
, clang
, xlc
lub innej nazwy), a wiele z nich używa więcej opcji kompilatora. Oczywiście, możesz po prostu wpisać polecenie, które make
wykonuje bezpośrednio w wierszu poleceń.