Dydaktyka:
FeedbackTo jest stara wersja strony!
 
POSIX:
 
C:
 
Deskryptory plików:
 
Wybrane flagi dla funkcji  
Pozycje odniesienia dla  
Wyciąg funkcji i stałych z materiałów
Porównanie API
	
	
		 
	
	  POSIX                C I/O     C++ streams                      
	
		 
	   identyfikuje plik przez:   
	
		 
	  deskryptor pliku  
int    wskaźnik  
FILE*    specjalizowane klasy  
	
std::ifstream/std::ofstream/std::fstream  
		 
	  otwieranie / tworzenie / zamykanie / usuwanie pliku:   
	
		 
	open 
creatfopen                                         konstruktor klasy lub metoda  
	open 
		 
	close            fclose                                        metoda  
	close                                                            
		 
	unlink           remove                                        std::filesystem::remove                                                 
		 
	  odczyt / zapis / zmiana pozycji:   
	
		 
	read             fread, fscanf, fgetc, fgets, …    operator >>, metody  
	read, readsome, get, getline,  …        
		 
	write            fwrite, fprintf, fputc, fputs, …  operator <<, metody  
	write, put,  …                                  
		 
	lseek            fseek, ftell, fgetpos, fsetpos, … metoda  
	tellg i seekg                                                
		 
	  inne:   
	
		 
	truncate 
ftruncate                                           std::filesystem::resize_file                                            
		 
	dup 
dup2                                                                                                                                  
	
		 
	  standardowe identyfikatory wejścia/wyjścia/błędu:   
	
		 
0, 1 i 2 stdin, stdout i stderr std::cin, std::cout i  std::cerr #include'y
	
		 
	  fcntl.h   (file control)     
	open, creat      
		 
  unistd.h                                   pozostałe funkcje interfejsu POSIX z tabeli wyżej  
	
	
		 
	  errno.h                                    stała  
	errno 1)         
		 
	  stdio.h                                     
	perror               
		 
  string.h                                    
	strerror             Wybrane stałe
	
	
		 
	
	 Wartość   Nazwa stałej  
	
		 
	 0   STDIN_FILENO  
	
		 
	 1   STDOUT_FILENO  
	
		 
 2   STDERR_FILENO  
	open:
O_RDONLY, O_RDWR, O_WRONLYO_CREAT lub O_CREAT | O_EXCL (przy ustawieniu tej flagi do funkcji open trzeba przekazać trzeci argument opisujący uprawnienia nowo tworzonego pliku)O_APPENDO_TRUNClseek:
Zadanie 1 Napisz "hello world" dodając jedną linię do poniższego kodu. Użyj funckji z interfejsu POSIX.
#include <unistd.h> int main(){ return 0; }
Zadanie 2
Napisz program który zapyta o imię, następnie wypisze Witaj <imię>.
Do odczytu ze standardowego wejścia użyj funkcji z interfejsu POSIX.
Zadanie 3 Napisz program który dwa razy wykona kolejno:
"no","to","wać\n".Następnie sprawdź działanie kodu w następujące sposoby:
./prog),cat (tzn. ./prog | cat),stdbuf -o0 bash, potem uruchom program normalnie.Wyjaśnij różnice w wynikach.
Zadanie 4 Napisz program który wyświetli na ekranie całą zawartość pliku podanego jako pierwszy argument.
Zadanie 5
Napisz program który spróbuje otworzyć plik którego nazwa została podana jako
pierwszy argument i wyświetli komunikat czy otwarcie (do zapisu i odczytu) się
powiodło. Jeśli otwarcie się nie powiodło, program ma wyświetlać odpowiedni
komunikat. Dodatkowo wybierz i obsłuż trzy z poniższych punktów.
Jeśli otwarcie się nie powiodło:
\e[44m),\e[41m),\e[42m),\e[46m),\e[45m).Do wypisania komunikatu w konkretnym kolorze, wypisz przed nim podane w nawiasach znaki, a za nim
\e[0m.
Przykładowym gniazdem które można użyć do testów jest plik /dev/log.
Zadanie 6 Napisz program który jako argumenty przyjmuje dwie ścieżki do plików i wypisuje na standardowe wyjście czy pliki są identyczne.
Zadanie 7
Napisz program który jako argument przyjmuje ścieżkę do pliku plik.
Program ma stworzyć pliki o nazwach plik_u i plik_l zawierające
treść źródłowego pliku, przy czym w pierwszym wszystkie litery (znaki ASCII
a-z) mają być zmienione na wielkie, a w drugim na małe.
Nagłówek ctype.h udostępnia funkcje toupper i tolower.
Zadanie 8
Napisz program który dla każdego pliku podanego jako argument wypisze wielkość
pliku i ostatnie 16 bajtów z pliku. Użyj funkcji lseek.
Zadanie 9 Napisz w dwóch wersjach program który zmienia małe litery na wielkie w pliku podanym jako argument:
Zadanie 10 Umieść w wybranym pliku przynajmniej 32 bajty tekstu. Następnie stwórz program, który:
Sprawdź jak wygląda treść pliku.
open
flagę O_APPEND i porównaj działanie programu.
Zadanie 11
Napisz program który stworzy plik o stałej nazwie i ustawi jego rozmiar na
4.5036e15 bajtów (czyli ok. 4 petajabty). Następnie program ma wpisać stałe
wybrane ciągi znaków na początek i na koniec pliku.
Uruchom program, następnie podaj rzeczywistą wielkość pliku. Spróbuj wyświetlić
pierwsze 16 bajtów pliku, cały plik (używając np. cat -v) i ostatnie 16
bajtów pliku.
Zadanie 12
Stwórz program który otworzy plik podany jako pierwszy argument programu, a
następnie wykorzystując dup bądź dup2 zastąpi standardowe wyjście tym
plikiem. Potem program ma kolejno wykonać przykładowy write do
STDOUT_FILENO, printf oraz ma wykonać jakąś komendę poleceniem
system (np. system("ls -la")). Które z tekstów trafiły do pliku po
uruchomieniu programu?
Zadanie 13 Stwórz program który otworzy wskazany w argumentach plik, następnie usunie go i spróbuje odczytać zawartość do końca pliku z deskryptora zwróconego przez funkcję open.
errno wchodzą w standard C, większość wartości ustandaryzowanych w POSIX wchodzi też w standard języka C++.