Wybrane funkcje systemowe Unixa

Podobne dokumenty
Systemy Operacyjne ZAAWANSOWANE OPERACJE WEJŚCIA-WYJŚCIA DLA PLIKÓW

ISO/ANSI C - biblioteki ISO/ANSI C. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki

Programowanie w systemie UNIX

Funkcje systemu Unix

CZAS 1. Układy pomiaru czasu w komputerze PC

Sprz etowy zegar czasu rzeczywistego RTC. Synchronizacja zegara RTC

Sprz etowy zegar czasu rzeczywistego RTC

Timer sprz etowy. Sprz etowy zegar czasu rzeczywistego RTC. Synchronizacja zegara RTC. Timer sprz etowy (cd.)

ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie. ISO/ANSI C zakończenie

PERL. Practical Extraction and Report Language Pathologically Eclectic Rubbish Lister

4.2 Sposób korzystania z l acza

INFORMATYKA Studia Niestacjonarne Elektrotechnika

odmierzanie czasu - przykład

Operacje powiązane z systemem:

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

CZAS 1. Układy pomiaru czasu w komputerze PC

Pobieranie argumentów wiersza polecenia

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Paradygmaty programowania. Paradygmaty programowania

Sprz etowy zegar czasu rzeczywistego RTC. Synchronizacja zegara RTC. Timer sprz etowy. Timer sprz etowy (cd.)

Operacje wejścia/wyjścia (odsłona druga) - pliki

Obsługa plików Procesy

Systemy Operacyjne - Operacje na plikach

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Programowanie Proceduralne

Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

ISO/ANSI C obsługa błędów. ISO/ANSI C obsługa błędów. ISO/ANSI C obsługa błędów. ISO/ANSI C obsługa błędów. ISO/ANSI C obsługa błędów

Wykład 8 Systemy plików w Linuksie. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

aodczytywać zniegoza pomoc afunkcjiread, (niebuforowane funkcje wejścia/wyjścia). e sukcesem, to zwróci liczb, erzeczywiściezapisanychbajtów.

Obsługa plików. 6. Pliki 2005/2005

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

ISO/ANSI C obsługa błędów ISO/ANSI C. ISO/ANSI C obsługa błędów. ISO/ANSI C obsługa błędów. ISO/ANSI C obsługa błędów. ISO/ANSI C obsługa błędów

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

1. Timery i zdarzenia

Uzupełnienie dot. przekazywania argumentów

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )

Funkcja (podprogram) void

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Linux Kernel III. Character devices

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Uruchamianie SNNS. Po uruchomieniu. xgui & lub snns & pojawia si e okno. programu. Symulator sztucznych sieci neuronowych SNNS 1

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Sieciowa komunikacja procesów - XDR i RPC

2 Przygotował: mgr inż. Maciej Lasota

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Systemy Operacyjne Ćwiczenia

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Wykład 3: Implementacja programów wbudowanych

Krótkie wprowadzenie do korzystania z OpenSSL

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

1. Ustanawianie ograniczeń na użycie zasobów

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

J. Ułasiewicz Łącza nienazwane, nazwane, select 1

Wstęp do programowania 1

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Podstawy Programowania.

Programowanie Proceduralne

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Ghost in the machine

INFORMATYKA Studia Niestacjonarne Elektrotechnika

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna zwraca wartość 1(czasamiNULL) iprzypisujezmiennej zewn etrznej,

Wstęp do programowania 1

Obliczenia rozproszone z wykorzystaniem MPI

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Wykład 9 Systemy plików w Linuksie

us lugi katalogowe? Czym różni si e serwer katalogowy od serwera bazy danych:

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Linux cz.3: polecenia systemowe, ćwiczenia

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Co nie powinno być umieszczane w plikach nagłówkowych:

MS Visual Studio 2005 Team Suite - Performance Tool


Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.

Temat zajęć: Obsługa systemu plików.

Rozdzia l 3. Laboratorium 3. danych zawierajac

System operacyjny UNIX system plików. mgr Michał Popławski, WFAiIS

Pliki. Informacje ogólne. Obsługa plików w języku C

Podstawy Programowania

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Wykład 1

sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

Transkrypt:

Wybrane funkcje systemowe Unixa Witold Paluszyński witold.paluszynski@pwr.wroc.pl http://sequoia.ict.pwr.wroc.pl/ witold/ Copyright c 2000 2006 Witold Paluszyński All rights reserved. Niniejszy dokument zawiera materia ly do wyk ladu na temat wybranych funkcji systemowych Unixa. Jest on udost epniony pod warunkiem wykorzystania wy l acznie do w lasnych, prywatnych potrzeb i może być kopiowany wy l acznie w ca lości, razem z niniejsza strona tytu low a.

Informacje o pliku: inode System Unix trzyma informacje o plikach i katalogach w strukturach zwanych i-node ami (i-w ez lami???). Można uzyskać do nich dost ep poprzez struktur e stat, której elementami program może manipulować. struct stat { dev_t st_dev; /* ID of device containing */ /* a directory entry for this file */ dev_t st_rdev; /* ID of device */ /* This entry is defined only for */ /* char special or block special files */ ino_t st_ino; /* Inode number */ mode_t st_mode; /* File mode (see mknod(2)) */ nlink_t st_nlink; /* Number of links to file */ uid_t st_uid; /* User ID of the file s owner */ gid_t st_gid; /* Group ID of the file s group */ off_t st_size; /* File size in bytes */ time_t st_atime; /* Time of last access */ time_t st_mtime; /* Time of last data modification */ time_t st_ctime; /* Time of last file status change */ /* Times measured in seconds since */ /* 00:00:00 UTC, Jan. 1, 1970 */ long st_blksize; /* Preferred I/O block size */

blkcnt_t st_blocks; /* Number of 512 byte blocks allocated*/... }; int stat(const char *path, struct stat *buf); int lstat(const char *path, struct stat *buf); int fstat(int fildes, struct stat *buf);

rename zmienia nazw e pliku Inne operacje na plikach chmod zmienia prawa dost epu do pliku umask ustawia mask e praw dost epu nowo tworzonych plików access sprawdza prawa dost epu procesu do pliku link tworzy nowy link (twardy) do pliku symlink tworzy nowy link symboliczny do pliku unlink kasuje plik (lub link symboliczny) rmdir kasuje kartotek e (musi być pusta) remove kasuje plik lub pusta kartotek e mkdir tworzy kartotek e chdir prze l acza si e do innej kartoteki dup duplikuje deskryptor otwartego pliku fcntl pozwala wykonać wiele różnych operacji na otwartych plikach

Czytanie zawartości kartotek struct dirent { ino_t d_ino; off_t d_off; unsigned short d_reclen; char d_name[1]; }; DIR *opendir(const char *filename); struct dirent *readdir(dir *dirp); int closedir(dir *dirp); #include <stdio.h> #include <dirent.h> DIR *dirp; struct dirent *direntp; dirp = opendir( "." ); while ( (direntp = readdir( dirp ))!= NULL ) (void)printf( "%s\n", direntp->d_name ); (void)closedir( dirp );

#include <unistd.h> #include <stdio.h> #include <dirent.h> #include <string.h> #include <sys/stat.h> Przyk lad: wyświetlanie struktury kartotek void printdir(char *dir, int depth) { DIR *dp; struct dirent *entry; struct stat statbuf; if((dp = opendir(dir)) == NULL) { fprintf(stderr,"cannot open directory: %s\n", dir); return; } chdir(dir); while((entry = readdir(dp))!= NULL) { stat(entry->d_name,&statbuf); if(s_isdir(statbuf.st_mode)) { /* Found a directory, but ignore. and.. */ if(strcmp(".",entry->d_name) == 0 strcmp("..",entry->d_name) == 0) continue;

} printf("%*s%s/\n",depth,"",entry->d_name); /* Recurse at a new indent level */ printdir(entry->d_name,depth+4); } else printf("%*s%s\n",depth,"",entry->d_name); } chdir(".."); closedir(dp);

Funkcje czasu zegarowego Unixowe funkcje czasu zegarowego obs luguj a czas od godziny 0:00 1 stycznia 1970 do godziny 04:14:07 19 stycznia 2038. 1 #include <sys/types.h> #include <time.h> time_t time(time_t *tloc); Funkcja time zwraca czas bieżacy w postaci liczby sekund, jakie up lyn e ly od godziny 0:00 dnia 1 stycznia 1970. 1 Do odliczania czasu użyta jest wartość long (ze znakiem), co wydaje si e marnotrawstwem jednego cennego bitu (użycie liczby bez znaku wyd luży loby życie Unixa do roku 2106). Zatem w roku 2038 można oczekiwać problemów z czasem w systemach komputerowych na platformie Unixa podobnych do tych, które wyst epowa ly na innych platformach na poczatku roku 2000. W rzeczywistości różne problemy z czasem zacz e ly si e już pojawiać. 10 stycznia 2004 o godzinie 14:37:04 min e la po lowa okresu życia Unixa, co zreszta w laśnie dzi eki zastosowaniu liczby ze znakiem pozwoli lo uniknać możliwych b l edów, zawinionych przez programistów, którzy by o tym znaku zapomnieli. Ale np. 12 maja 2006 pojawi ly si e raporty o wielu zwisach baz danych, które nastapi ly dok ladnie jeden miliard sekund przed feralna data 2038 roku. Okaza lo si e, że w niektórych serwerach ustawione by ly tak d lugie time-outy na transakcje, i programy sprawdzajace dat e po tym okresie nie mog ly sobie poradzić z otrzymanymi wynikami...

Funkcje czasu obliczenia kalendarzowe struct tm *localtime(const time_t *clock); time_t mktime(struct tm *timeptr); struct tm { int tm_sec; /* seconds after the minute - [0, 61] */ /* for leap seconds */ int tm_min; /* minutes after the hour - [0, 59] */ int tm_hour; /* hour since midnight - [0, 23] */ int tm_mday; /* day of the month - [1, 31] */ int tm_mon; /* months since January - [0, 11] */ int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0, 6] */ int tm_yday; /* days since January 1 - [0, 365] */ int tm_isdst; /* flag for alternate daylight savings time */ }; Funkcja localtime tworzy i wype lnia struktur e tm, która daje dost ep do elementów aktualnego czasu. Brana jest pod uwag e lokalna strefa czasowa, czas letni/zimowy, lata przest epne, a nawet sekundy przest epne. 2 Funkcja mktime zamienia struktur e czasowa tm na liczb e sekund jak w funkcji time, dodatkowo kompletujac i normalizujac pola w strukturze, które moga być wype lnione cz eściowo, lub poza zakresem (np. tm_hour < 0 lub > 23). 2 Ostatnie sekundy przest epne, określane przez organizacj e IERS (International Earth Rotation Service), wyst api ly (równocześnie na ca lym świecie): 1998-12-31 23:59:60Z, 2005-12-31 23:59:60Z, 2008-12-31 23:59:60Z...

Funkcje czasu napisy sformatowane char *ctime(const time_t *clock); Funkcja ctime tworzy zapis daty i czasu w postaci napisu o ustalonym 26-znakowym formacie: "Thu Nov 23 11:04:20 2000\n\0". Wyświetlany jest czas lokalny, i napis ten nie podlega żadnym, lokalizacjom, modyfikacjom, ani konwencjom. Istniej a również funkcje do tworzenia dowolnie sformatowanych napisów czasowych (patrz strftime).

Funkcje czasu przyk lad #include <stdio.h> /* Przyklad: obliczanie numeru dnia w roku*/ #include <time.h> /* dzien, miesiac, rok bierzemy z argv[] */ #include <errno.h> /* jesli brak to bierzemy z dnia biezacego*/ int wiek21 = 0; time_t sekczas; struct tm strczas; char *const wday[] = {"Nie","Pon","Wto","Sro","Czw","Pia","Sob"}; sekczas= time(null); /* w sekundach od 1970-01-01 */ strczas= *localtime(&sekczas); if (argc > 1) sscanf(argv[1], "%d", &strczas.tm_mday); if (argc > 2) { sscanf(argv[2], "%d", &strczas.tm_mon); strczas.tm_mon--; /* musi byc w przedziale[0,11]*/ } if (strczas.tm_year >= 100) /* mamy XXI wiek, fajnie jest */ wiek21 = 1; if (argc > 3) { sscanf(argv[3], "%d", &strczas.tm_year); if (strczas.tm_year < 100) /* mamy rok wzgledem stulecia */ if (wiek21==1) strczas.tm_year += 100; if (strczas.tm_year >= 1900) /* uzytkownik podal pelny rok */ strczas.tm_year -= 1900; } mktime(&strczas); printf("numer dnia %.4d-%.2d-%.2d ---> %3d (%s)%s\n", strczas.tm_year + 1900, strczas.tm_mon + 1, strczas.tm_mday, strczas.tm_yday + 1, wday[strczas.tm_wday], (strczas.tm_isdst) > 0? " CZAS LETNI" : "");

Funkcje czasu procesów #include <sys/times.h> #include <limits.h> clock_t times(struct tms *buf); struct tms { clock_t tms_utime; /* user time */ clock_t tms_stime; /* system time */ clock_t tms_cutime; /* user time, children */ clock_t tms_cstime; /* system time, children */ }; funkcja times zwraca czas zegarowy, jaki up lyn a l od arbitralnie ustalonego momentu w czasie (może to być np. moment startu systemu); jednostka jest tzw. tick, którego liczb e na sekund e określa makro clk tck (przyk ladowo 50, 60, albo 100) podana struktura jest wype lniana przez funkcj e times wartościami czasu procesora zużytego przez proces i jego podprocesy, które już si e zakończy ly i

zosta ly poprawnie obs lużone funkcja wait; wartości czasu sa podobnie liczone od arbitralnego momentu i podane w tych samych jednostkach czas procesora zużyty przez proces liczony jest w rozbiciu na tzw. czas użytkownika, czyli instrukcje programu, i czas systemu, tzn. operacje jadra Unixa: funkcje systemowe i operacje pomocnicze