Systemy operacyjne. getopt() część 2. Artur Gramacki Instytut Informatyki i Elektroniki

Wielkość: px
Rozpocząć pokaz od strony:

Download "Systemy operacyjne. getopt() część 2. Artur Gramacki Instytut Informatyki i Elektroniki"

Transkrypt

1 Systemy operacyjne część 2 Artur Gramacki Instytut Informatyki i Elektroniki getopt() 1

2 Argumenty programu, funkcja getopt() Prosty przykład $./args -a plik -b cos-innego #include <stdio.h> argument 0:./args int main (int argc, char *argv[]) { option: a int i; argument 2: plik for (i = 0; arg < argc; arg++) { option: b if (argv[arg][0] == '-') argument 4: cos-innego printf ("option: %s\n", argv[arg]+1); else printf ("argument %d: %s\n", i, argv[arg]); exit(0); przykłady (jeżeli nie zaznaczono inaczej) pochodzą z [4] a co powiesz, gdy trzeba obsłużyć coś takiego: tar [ - ] A --catenate --concatenate c --create d --diff --compare r --append t --list u --update x -extract --get [ --atime-preserve ] [ -b, --block-size N ] [ -B, --read-full-blocks ] [ -C, --directory KATALOG ] [ --checkpoint ] [ -f, --file [HOST- NAME:]F ] [ --force-local ] [ -F, --info-script F --new-volume-script F ] [ -G, --incremental ] [ -g, --listed-incremental F ] [ -h, --dereference ] [ -i, --ignore-zeros ] [ -j, --bzip2 ] [ --ignore-failed-read ] [ -k, --keep-old-files ] [ -K, --starting-file F ] [ -l, --one-file-system ] [ -L, --tape-length N ] [ -m, --modification-time ] [ -M, --multi-volume ] [ -N, --after-date DATA, --newer DATA ] [ -o, --old-archive, --portability ] [ -O, --to-stdout ] [ -p, --same-permissions, --preserve-permissions ] [ -P, --absolute-names ] [ --preserve ] [ -R, --record-number ] [ --remove-files ] [ -s, --same-order, --preserve-order ] [ --same-owner ] [ --numeric-owner ] [ -S, --sparse ] [ -T, --files-from F ] [ --null ] [ --totals ] [ -v, --verbose ] [ -V, --label NAZWA ] [ --version ] [ -w, --interactive, --confirmation ] [ -W, --verify ] [ --exclude PLIK ] [ -X, --exclude-from PLIK ] [ -Z, --compress, --uncompress ] [ -z, --gzip, --ungzip ] [ --use-compress-program PROG ] [ --block-compress ] [ --rsh-command POLECENIE ] [ -[0-7][lmh] ] 3 funkcja getopt() Istnieją trzy warianty tej funkcji getopt() getopt_long() getopt_long_only() W powłoce bash istnieje bardzo podobne w działaniu polecenie getopt Pozwala na bardzo łatwą obsługę podawanych opcji. Akceptuje różne warianty, przykładowo: -t kolor w /tmp/plik.out k -b -kb -tryb=kolor -w -k b t kolor -wynik=/tmp/plik.out --tryb=cz_b --kompresja --blokowo i inne kombinacje opcje, które nie mają dalszych argumentów mogą być grupowane za jednym myślnikiem po każdej opcji jako oddzielny argument może pojawić się wartość dla tej opcji 4 2

3 funkcja getopt(), c.d. Rezultatem zwracanym przez getopt jest następny znak opcji znaleziony w argv (jeżeli jakiś tam jest). Funkcję getopt wywołujemy rekurencyjnie. Działa ona następująco: jeżeli opcja dopuszcza jakąś wartość, to ta wartość jest wskazywana przez zewnętrzna zmienną optarg getopt zwraca -1, gdy nie ma już więcej opcji do przetworzenia zwraca?, gdy napotka nierozpoznawalną opcję, którą zapisze w zewnętrznej zmiennej optopt jeżeli jakaś opcja wymaga podania wartości, a nie zostanie ona podana, getopt zwraca : (dwukropek) zewnętrzna zmienna optind jest przyrównywana do indeksu następnego argumentu, który ma być przetwarzany. getopt wykorzystuje go do zapamiętania, jak daleko doszła #include <unistd.h> int getopt(int argc, char *const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; 5 funkcja getopt(), c.d. #include <stdio.h> #include <unistd.h> int main (int argc, char *argv[]) { int opt; while ((opt = getopt (argc, argv, "if:lr"))!= -1) { switch(opt) { case 'i': case 'l': case 'r': printf("option: %c\n", opt); break; case 'f': printf("filename: %s\n", optarg); break; case ':': printf("option needs a value\n"); break; case '?': printf("unknown option: %c\n", optopt); break; for(; optind < argc; optind++) printf("argument: %s\n", argv[optind]); exit(0); rozpoznawane opcje to: i, f, l, r. po opcji f wymagany jest argument argumenty pozostałych opcji są niewymagane koniec przetwarzania argument po opcji zapisywana jest tutaj zwraca :, gdy nie podano wymaganego argumentu zwraca?, gdy napotkano nieznaną opcję nieznana opcja zapisywana jest tutaj getopt ponownie zapisuje tablicę argv. Tu znajdą się wszystkie argumenty nie będące opcjami 6 3

4 Przykłady działania funkcja getopt(), c.d. $./argopt -i -f -l -r option: i filename: -l option: r $./argopt -i -f plik -l -r option: i filename: plik option: l option: r $./argopt -ilf -f plik option: i option: l filename: r argument: plik $./argopt -a./argopt: invalid option -- a unknown option: a $./argopt -i xxx -l yyy -r zzz -f plik option: i option: l option: r filename: plik argument: xxx argument: yyy argument: zzz $./argopt -il -f plik option: i option: l filename: plik $./argopt --i./argopt: invalid option -- - unknown option: - option: i Aby uniknąć tego niechcianego komunikatu należy dodać dwukropek na początku opcji, tj. :if:lr 7 funkcja getopt(), c.d. Przykłady użycia z poziomu powłoki bash #!/bin/sh echo "Before getopt" for i do echo $i done set -- `getopt abc:d $*` echo "After getopt" for i do echo "-->$i" done for i do case "$i" in -a -b) shift; echo "flag a or b set";; -c) shift; echo "flag c set to $1";shift;; -d) shift; echo "flag d set";; esac done $./test.sh -abc plik -d -e Before getopt -abc plik -d getopt: invalid option -- e After getopt -->-a -->-b Aby uniknąć tego -->-c niechcianego komunikatu -->plik należy dodać dwukropek -->-d na początku opcji, tj. -->-- :abc:d flag a or b set flag a or b set flag c set to plik flag d set przykład opracowany na podstawie podręcznika man getopt 8 4

5 funkcja getopt(), c.d. Parę uwag na temat polecenia shift #!/bin/sh while [ "$1"!= "" ]; do echo \$1: "$1" echo \$*: "$*" echo \$#: "$#" echo "" shift done przykład własny Polecenie shift przesuwa wszystkie zmienne parametryczne w dół o jedna pozycję, tak więc $2 staje się $1, $3 staje się $2 itd. Poprzednia wartość $1 jest kasowana, natomiast $0 pozostaje niezmieniona Polecenie to jest często używane do przeszukiwania parametrów. $./_shift one two three $1: one $*: one two three $#: 3 $1: two $*: two three $#: 2 $1: three $*: three $#: 1 9 Wywołania systemowe 5

6 Wywołania systemowe uwagi wstępne Każdy kod (program) w Linuxie działa w jednym z dwóch trybów: trybie użytkownika lub trybie jądra. Tryb jądra używamy pisząc takie programy jak np. jądro, sterowniki urządzeń. Programy w trybie użytkownika podlegają wielu ograniczeniom, aby nie mogły uszkodzić samego systemu. Ogólnie: pamięć i zasoby zaalokowane dla programu A nie mogą być użyte w programie B. Tryb jądra daje pełen i nieskrępowany dostęp do całego systemu. Może więc wszystko popsuć! Np. pisząc sterownik urządzenia musimy mieć pełen dostęp do sprzętu, czyli np. do jego BIOS-u i o wypadek nietrudno 11 Wywołania systemowe uwagi wstępne, c.d. Czyli: zadaniem jądra jest dostarczenie aplikacjom różnych usług przy jednoczesnym zapewnieniu integralności i bezpieczeństwa systemu. Innymi słowy: kod aplikacji w trybie użytkownika żąda różnych usług od jądra. Robi to poprzez wywołania systemowe, które w bezpieczny dla systemu sposób mogą uzyskać dostęp do chronionych zasobów. Wywołania systemowe są tak zaprojektowane, że wyglądają jak standardowe funkcje C. Moża powiedzieć, że prawdziwe wywołania systemowe są opakowane w wygodny interfejs, jaki daje język C. 12 6

7 Wywołania systemowe uwagi wstępne, c.d. Pewne ograniczenie w.s.: wszystkie dane, jakie przekazujemy do jądra za pośrednictwem wywołań systemowych są przekazywane przez adres. W praktyce oznacza to, że przy wywoływaniu funkcji systemowych musimy używać wskaźników do struktur a nie samych struktur. Do czego więc używać wywołań systemowych? Gdy potrzebujemy usług, których kod użytkownika (np. w języku C) nie jest w stanie sam dostarczyć. Ile jest usług systemowych? W najnowszej wersji jądra Linuxa ponad 200. Dokładna lista patrz: /usr/include/asm/unistd.h 13 Wywołania systemowe uwagi wstępne, c.d. Wszystkie usługi systemowe można podzielić na: zarządzanie procesami (np. fork, exec, setgid, setuid) obsługa sygnałów (np. sigaction, sigsuspend, sigreturn) obsługa plików i katalogów (np. mkdir, chdir, read, write, open, close) zarządzanie pamięcią (np. mmap, mlock, munlock) usługi sieciowe (np. sethostname, gethostname) Bardzo często korzystamy z wywołań systemowych nie zdając sobie z tego sprawy. Np. printf korzysta z write a malloc z brk, sbrk. Można więc np. napisać własną wersję malloc z obsługą tzw. garbage collection. 14 7

8 Wywołania systemowe uwagi wstępne, c.d. Jak używa się wywoływania systemowe? praktycznie tak samo jak zwykłe funkcje aby ich użyć trzeba włączyć plik nagłówkowy <unistd.h> szczegółowa dokumentacja w man sekcja 2: zachowanie, parametry, zwracane wartości sekcja 3: wywołania systemowe mają odpowiadające im funkcje biblioteczne o podobnej nazwie, więc i tu warto zaglądać 15 Kilka przykładów z tabeli błędów Tabela podaje możliwe błędy zwracane przez wywołania systemowe Pełna dokumentacja w man Kody błędów zdefiniowane przez POSIX (Linux dobrze go wspiera) są udokumentowane w sekcji 3 podręcznika errno (man 3 errno) Przykłady ENOENT proces próbuje skorzystać z nieistniejącego pliku lub katalogu ESRCH nie istnieje taki proces E2BIG lista argumentów dla exec zbyt długa REOFS próba zapisu do systemy plików tylko do odczytu EIO pojawił się błąd wej/wyj EACCESS odmowa dostępu do pliku lub innego zasobu 16 8

9 Kody zwracane przez wywołania systemowe 0 gdy sukces, liczba ujemna (zwykle -1) gdy pojawi się błąd Przykłady (oba są równoważne, pierwszy chyba częściej spotykany) // Porównanie zwróconego kodu do 0 if (open ("plik", O_RDONLY)) { /* kod obsługi błędu */ else { /* otwarcie pliku zakończone sukcesem */ Otwarcie pliku do odczytu. Systemowa obsługa plików i katalogów będzie dokładnie omówiona później. // Sprawdzamy wprost, czy open zwróciło wartość ujemną if (open ("plik", O_RDONLY) < 0) { /* kod obsługi błędu */ else { /* otwarcie pliku zakończone sukcesem */ przykłady z [2] 17 Obsługa błędów Istnieją dwa sposoby sprawdzenia, czy wystąpił błąd i obsługi błędów. Pierwszy pokazano na poprzednim slajdzie. Drugi sposób to użycie globalnej zmiennej errno (<errno.h>). Wywołania systemowe oraz różne funkcje biblioteczne ustawiają errno, gdy pojawi się błąd. Istnieją dwa sposoby ustawienia tej zmiennej: wywołanie funkcji void perror (const char *s), która wyświetla łańcuch s, po którym pojawia się znak dwukropka oraz związany z errno komunikat (<stdio.h>) użycie funkcji char *strerror (int errnum)(<string.h>), która zwraca łańcuch opisujący kod błędu errnum 18 9

10 perror strerror Obsługa błędów... if ((pfile = fopen ("plik", "r")) == NULL) { perror ("fopen"); exit (EXIT_FAILURE); else { frpintf (stdout, "OK."); fclose (pfile);... exit (EXIT_SUCCESS)... // fopen: No such file or directory... if ((pfile = fopen ("plik", "r")) == NULL) { fprintf (stderr, "fopen: %s", strerror (errno)); exit (EXIT_FAILURE); else { frpintf (stdout, "OK."); fclose (pfile);... exit (EXIT_SUCCESS)... // fopen: No such file or directory przykłady z [2] 19 Zmienne środowiskowe Zwykle każdy system definiuje ich dość dużo Najpopularniejsze zmienne to np. HOME, PATH, PS1, LC_ALL oraz inne Zmienna środowiskowa ma postać nazwa=wartosc Zmienna środowiskowa zachowuje się trochę jak zmienna globalna i może czasem zmieniać działanie programu oraz utrudniać jego debugowanie! Programowo dostęp do zmiennych środowiskowych odbywa się za pomocą funkcji getenv oraz setenv getenv: 3 przypadki zmienna nie istnieje (funkcja zwraca null) zmienna istnieje ale nie ma wartości (zwracany jest ciąg, którego pierwszym bajtem jest null) zmienna istnieje i ma przypisaną wartość (zwraca wskaźnik na pierwszy znak ciągu) 20 10

11 putenv Zmienne środowiskowe, c.d. pobiera ciąg o postaci nazwa=wartość i dodaje go do bieżącej sesji gdy błąd, to zwraca -1 zwróci ENOMEM, gdy zmienna nie będzie mogła być ustawiona z powodu braku pamięci W systemie najwygodniej zmienne ustawiać w tzw. login skryptach Zwykle dostępny tylko dla root-a. ogólnodostępny: /etc/profile (odczytywany jako pierwszy) osobiste startowe : ~/.bash_profile, ~/.bash_login, ~/.profile (szuka w tej właśnie kolejności i wykonuje pierwszy, który się da odczytać) osobiste kończące : ~/.bash_logout --noprofile (zakazujemy odczytywać skrypty) szczegóły man bash (lub inna uzywana powłoka, np. sh) Kropka na początku nazwy: plik ukryty. Zmienne mają zasięg ograniczony tylko do bieżącej sesji 21 Przykład 1 Zmienne środowiskowe, c.d. #include <stdlib.h> #include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *var, *value; var = argv[1]; value = getenv (var); if (value) printf ("%s %s\n", var, value); else printf ("%s jest NULL\n", var); // Tworzymy string w postaci: name=value // i wołamy putenv. if (argc == 3) { char *string; value = argv[2];... strcpy (string, var); strcat (string, "="); strcat (string, value); if(putenv(string)!= 0) { fprintf(stderr,"putenv failed\n"); free(string); exit(1); // Sprawdzamy, czy zmienna została ustawiona value = getenv (var); if (value) printf ("%s %s\n", var, value); else printf("%s jest NULL?\n", var); exit(0);

12 Zmienne środowiskowe, c.d. Przykład 2 program przechodzi przez zmienną environ (tablica łańcuchów) i drukuje jej zawartość, czyli wartości wszystkich zdefiniowanych w danej sesji zmiennych środowiskowych #include <stdlib.h> #include <stdio.h> extern char **environ; int main() { char **env = environ; Tablica ciągów w postaci nazwa=wartość jest bezpośrednio dostępna dla programisty za pośrednictwem zmiennej environ zadeklarowanej jako: #include <stdlib.h> extern char **environ; while (*env) { printf ("%s\n",*env); env++; exit(0); 23 Data i godzina Wszystkie systemy UNIX-owe przyjmują za początek epoki datę i podają ile sekund upłynęło od tego momentu czas jest zdefiniowany za pomocą predefiniowanego typu time_t (typu long) pytanie: kiedy pojemność licznika sekund się skończy? funkcja systemowa time zwraca niskopoziomową wartość czasu #include <time.h> #include <stdio.h> #include <unistd.h> Funkcję time int main() { int i; wywołujemy ze time_t the_time; wskaźnikiem pustym jako argumentem. for(i = 1; i <= 10; i++) { the_time = time ((time_t *) 0); printf("the time is %ld\n", the_time); sleep(2); exit(0); Funkcja zwraca liczbę sekund od początku epoki oraz zwracaną wartość zapisuje dodatkowo w zmiennej wskazywanej przez tloc, jeśli nie jest ona wskaźnikiem pustym. #include <time.h> time_t time (time_t *tloc) LONG_MAX dzień = 60 * 60 * 24 = sek. 1 rok = * 365 = sek / = 68,096 lat czyli gdzieś na początku roku 2038 będą problemy 24 12

13 Data i godzina, c.d. Za pomocą funkcji gmtime można otrzymać bardziej czytelną dla człowieka (oddzielnie minuty, sekundy, data itd.) Universal Coordinated Time (Greenwich Mean Time) #include <time.h> srtuct tm *gmtime (const time_t *tloc) #include <time.h> #include <stdio.h> int main() { struct tm *tm_ptr; time_t the_time; (void) time (&the_time); tm_ptr = gmtime (&the_time); struct tm { int tm_sec; /* Seconds. [0-60] */ int tm_min; /* Minutes. [0-59] */ int tm_hour; /* Hours. [0-23] */ int tm_mday; /* Day. [1-31] */ int tm_mon; /* Month. [0-11] */ int tm_year; /* Year */ int tm_wday; /* Day of week. [0-6] */ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /* DST. [-1/0/1] */ ; $./gmtime; date Raw time is gmtime gives: date: 107/03/07 time: 16:47:34 śro mar 7 17:47:34 CET 2007 printf ("Raw time is %ld\n", the_time); printf ("gmtime gives:\n"); printf ("date: %02d/%02d/%02d\n", tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday); printf ("time: %02d:%02d:%02d\n", tm_ptr->tm_hour, tm_ptr->tm_min, Funkcję timetm_ptr->tm_sec); wywołujemy ze exit (0); wskaźnikiem pustym jako argumentem. Czy wiesz, dlaczego rok wydrukował się z błędem? Czy wiesz dlaczego godziny są rożne? 25 Data i godzina, c.d. gmtime zwraca zawsze czas w GMT a czas zimowy w Polsce jest przesunięty w zimie o +1 godzinę UTC oraz GMT Czas uniwersalny (ang. universal time, UT, Greenwich Mean Time, GMT) czas słoneczny średni na południku zerowym za który przyjęto południk przechodzący przez obserwatorium astronomiczne w miejscowości Greenwich w Wielkiej Brytanii. Jest czasem strefowym pierwszej strefy czasowej, od którego liczy się czas pozostałych stref. Czas uniwersalny został zaproponowany przez kanadyjskiego wynalazcę Sandforda Fleminga (źródło: Wikipedia) Uniwersalny czas koordynowany, UTC (ang. Coordinated Universal Time) - wzorcowy czas uwzględniający nieregularność ruchu obrotowego Ziemi i koordynowany względem czasu słonecznego. By zapewnić, że Słońce średnio w ciągu roku przechodzi nad południkiem Greenwich o godz. 12:00 UTC, z dokładnością nie mniejszą niż 0.9 s, od czasu do czasu do UTC dodawana jest tzw. przestępna sekunda. Operację tę przeprowadza IERS (ang. International Earth Rotation Service) (źródło: Wikipedia) gdy różnica około 0.9 sekundy jest dla nas nieistotna, to UTC jest tym samym co GMT sposób zapisu daty i czasu podaje norma ISO 8601:2004 aby poznać lokalny czas należy użyć funkcji localtime (działa identycznie jak gmtime) 26 13

14 Informacja u użytkowniku Każdy użytkownik ma niepowtarzalny identyfikator (UID) oraz należy do przynajmniej jednej grupy (GID) Każdy uruchomiony program działa w imieniu jakiegoś użytkownika Za pomocą polecenia su można stać się innym użytkownikiem $ id -u 1000 $ users artur $ $ su - root Password: $ $ id -u 0 $ users artur Użycie: su [OPCJE] [-] [username [ARGUMENTY]] - uczyń to powłoką logowania -c, --command=<polecenie> przekaż polecenie do wywołanej powłoki używając jej opcji -c -m, -p, --preserve-environment nie resetuj zmiennych środowiskowych i użyj tej samej powłoki -s, --shell=<powłoka> użyj powłoki zamiast domyślnej z /etc/passwd Informacje o użytkowniku zapisane są w plikach /etc/passwd oraz /etc/shadow (jest to rodzaj bazy danych) 27 Informacja u użytkowniku, c.d. Pliki z danymi o użytkownikach /etc/passwd lab999:x:1655:100:lab999:/home/lab/lab999:/bin/bash /etc/shadow lab999:$1$mym8jjg0$4ccdxaykf45.sqrpu0nq9/:13427:0:99999:7::: Szczegóły budowy patrz: man 5 passwd (shadow) Dostęp do danych na temat użytkowników (odczyt) zapewniają funkcje getuid, geteuid, getgid, getegid getuid zwraca rzeczywisty ID użytkownika dla aktualnego procesu geteuid zwraca efektywny ID użytkownika dla aktualnego procesu getgid zwraca rzeczywisty ID grupy bieżącego procesu getegid zwraca efektywny ID grupy bieżącego procesu rzeczywisty ID odpowiada ID dla procesu wywołującego Efektywny ID odpowiada bitowi set UID dla uruchomionego pliku 28 14

15 Informacja u użytkowniku, c.d. Dostęp do danych na temat użytkowników (ustawianie) zapewniają funkcje setuid, seteuid, setgid, setegid funkcje set* może wywoływać tylko użytkownik uprzywilejowany (root) seteuid ustawia rzeczywisty ID użytkownika dla aktualnego procesu seteuid ustawia efektywny ID użytkownika dla aktualnego procesu setgid ustawia rzeczywisty ID grupy bieżącego procesu setegid ustawia efektywny ID grupy bieżącego procesu 29 Przykład Informacja u użytkowniku. c.d. #include <sys/types.h> #include <pwd.h> #include <stdio.h> #include <unistd.h> int main () { uid_t uid; gid_t gid; struct passwd *pw; uid = getuid (); gid = getgid (); printf ("User is %s\n", getlogin ()); printf ("User IDs: uid=%d, gid=%d\n", uid, gid); #include <unistd.h> #include <sys/types.h> uid_t getuid(void); char *getlogin(void); pw = getpwuid (uid); printf ("UID passwd entry:\n name=%s, uid=%d, gid=%d, home=%s, shell=%s\n", pw->pw_name, pw->pw_uid, pw->pw_gid, pw->pw_dir, pw->pw_shell); pw = getpwnam ("root"); printf ("root passwd entry:\n"); printf ("name=%s, uid=%d, gid=%d, home=%s, shell=%s\n", pw->pw_name, pw->pw_uid, pw->pw_gid, pw->pw_dir, pw->pw_shell); exit(0); User is artur User IDs: uid=1000, gid=50 UID passwd entry: name=artur, uid=1000, gid=50, home=/home/users/artur, shell=/bin/bash root passwd entry: name=root, uid=0, gid=0, home=/root, shell=/bin/bash 30 15

16 Informacje o komputerze Polecenia uname, gethostip wywołania systemowe uname, gethostname $ uname -a Linux mykonos bf2.4 #1 Son Apr 14 09:53:28 CEST 2002 i686 GNU/Linux $ gethostip mykonos mykonos.iie.uz.zgora.pl C0A81582 #include <sys/utsname.h> int uname (struct utsname *buf); struct utsname { char sysname[]; char nodename[]; char release[]; char version[]; char machine[]; #ifdef _GNU_SOURCE char domainname[]; #endif ; #include <unistd.h> int gethostname(char *name, size_t len); uname zapisuje dane o komputerze w strukturze wskazywanej przez buf. Zapisuje nazwę sieciową komputera w zmiennej name. Zakłada się, że ciąg ten ma co najmniej długość len. 0 sukces, -1 w przeciwnym wypadku. 31 Przykład Informacje o komputerze, c.d. #include <sys/utsname.h> #include <unistd.h> #include <stdio.h> int main() { char computer[256]; struct utsname uts; if (gethostname (computer, 255)!= 0 uname (&uts) < 0) { fprintf (stderr, "Could not get host information\n"); exit(1); printf ("Computer host name is %s\n", computer); printf ("System is %s on %s hardware\n", uts.sysname, uts.machine); printf ("Nodename is %s\n", uts.nodename); printf ("Version is %s, %s\n", uts.release, uts.version); exit(0); $./gethost Computer host name is mykonos System is Linux on i686 hardware Nodename is mykonos Version is bf2.4, #1 Son Apr 14 09:53:28 CEST

17 Rejestr systemowy Rejestr systemowy Wiele programów potrafi zapisywać dane do logów systemowych (zwykle w katalogu /var/log) typowe nazwy plików to messages, syslog, auth, cron, kern pliki logów są zwykle rotowane (auth.log, auth.log.0, auth.1.gz itd.) parametry rotowania są w pliku /etc/logrotate.conf typowe okresy to: codziennie, co tydzień, raz w miesiącu obsługą logów zajmują się specjalne programy rejestrujące (ang. system logger), są to klogd oraz syslogd pierwszy rejestruje tylko komunikaty jądra i (w typowych konfiguracjach) przesyła je do drugiego, który oprócz tego rejestruje inne istotne komunikaty pracują jako demony (programy działające nieprzerwanie i reagujące na określone zdarzenia) konfiguracja zwykle w pliku /etc/syslog.conf przykładowy wpis: kern.* /var/log/kern.log logi wysyłane są do programu rejestrującego za pomocą funkcji systemowej syslog na poziomie poleceń powłoki pisanie do logów zapewnia polecenie logger istnieje możliwość wysyłania logów w trybie on-line na inna maszynę np. wpis: każe wszystkie logi wysyłać na wskazany serwer wskazany serwer musi oczywiście zgodzić się na przyjmowanie obcych logów 34 17

18 Rejestr systemowy, c.d. Każdy komunikat zawiera przynajmniej datę i czas zarejestrowania, nazwę serwera oraz treść Mar 11 12:31:16 mykonos sshd[17142]: (pam_unix) session closed for user lab303 Każdy komunikat wysłany za pomocą syslog posiada sygnaturę określającą poziom ważności oraz podsystem podawane jako para: podsystem.poziom (ang. facility.priority) podsystem: podaje jaki rodzaj programu wysyła komunikat. Aktualnie obsługiwane są następujące podsystemy: auth authpriv cron daemon ftp kern lpr mail mark news syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 poziom ważności: określa ważność komunikatu. Aktualnie obsługiwane są następujące wartości (podano w kolejności od najbardziej do najmniej ważnego): emerg alert crit err warning notice info debug 35 Rejestr systemowy, c.d. Przykład użycia polecenie logger $ logger -p auth.emerg -t "Artur" "Komunikat testowy AG" $ Message from syslogd@mykonos at Mon Mar 12 19:29: mykonos Artur: Komunikat testowy AG $ tail -1 /var/log/auth.log Mar 12 19:29:04 mykonos Artur: Komunikat testowy AG Komunikat pojawia się również na konsoli. $ logger -p local7.info -t "Artur" "Komunikat testowy AG" $ tail -1 /var/log/messages Mar 12 19:31:24 mykonos Artur: Komunikat testowy AG Ten komunikat nie pojawia się na konsoli. #!/bin/sh PROG=`basename "$0"` FACILITIES=' auth authpriv cron daemon ftp kern lpr mail mark news syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7' PRIORITIES=' emerg alert crit err warning notice info debug' for f in $FACILITIES; do for p in $PRIORITIES; do logger -p $f.$p "$PROG[$$]: testowanie $f.$p" done done Wszystkie możliwe kombinacje priorytetów i poziomów ważności. Skrypt może służyć do testowania poprawnej pracy rejestratora systemowego

19 Rejestr systemowy, c.d. Przykład użycia funkcja systemowa syslog openlog służy do zmiany sposobu prezentowania komunikatów. ident: ciąg, który będzie dodawany na początku naszych komunikatów (może to być np. nazwa programu) option: flagi, które sterują zachowaniem się funkcji. Np. LOG_PID powoduje, że w logach będzie umieszczany identyfikator procesu, który spowodował wysłanie logu facility: podaje domyślną wartość dla podsystemu (ang. facility) użycie tej funkcji jest opcjonalne. Gdy nie użyjemy jawnie, to syslog zrobi to za nas closelog: zamyka deskryptor pliku logów. Użycie opcjonalne syslog: generuje logi systemowe, które są przechwytywane przez demona syslogd. Parametr priority tworzony jest jako połączenie za pomocą operatora OR wartości dla poziomu ważności oraz podsystemu #include <syslog.h> void openlog (const char *ident, int option, int facility); void syslog (int priority, const char *format,...); void closelog (void); 37 Rejestr systemowy, c.d. Przykład użycia funkcja systemowa syslog #include <syslog.h> #include <stdio.h> Poziom ważności (ang. priority) int main() { FILE *f; f = fopen ("not_here", "r"); if (!f) syslog (LOG_ERR LOG_USER, "oops - %m\n"); exit(0); $./syslog $ $ tail -1 /var/log/syslog Mar 12 21:10:11 mykonos mysyslog: oops - No such file or directory $ Podsystem (ang. facility) %m wstawia ciąg komunikatu błędu związany z bieżącą wartością zmiennej błędu errno (patrz poprzednie slajdy) U nas: No such file or directory Logi zapisywane są w tym pliku. Decyduje o tym odpowiedni wpis w pliku /etc/syslog.conf

20 Rejestr systemowy, c.d. Przykład użycia funkcja systemowa syslog Ciąg, który będzie dodawany na początku naszych komunikatów. #include <syslog.h> #include <stdio.h> #include <unistd.h> int main() { int logmask; Będzie też umieszczany identyfikator procesu. Gdy komunikat nie może zostać zarejestrowany, to jest wysyłany na konsolę. Domyślna wartość podsystemu użytkownika. openlog ("logmask", LOG_PID LOG_CONS, LOG_USER); syslog (LOG_INFO, "informative message, pid = %d", getpid()); syslog (LOG_DEBUG, "debug message, should appear"); syslog (LOG_CRIT LOG_AUTH, "Critilal cond. while auth."); logmask = setlogmask (LOG_UPTO (LOG_NOTICE)); // logmask = setlogmask (LOG_MASK (LOG_NOTICE)); syslog (LOG_DEBUG,"debug message, should not appear"); exit(0); Ten komunikat już nie zostanie zarejestrowany. LOG_MASK jak wyżej, ale $ tail -1 /var/log/messages tylko jeden wybrany poziom. Mar 12 21:29:00 mykonos logmask[32528]: informative message, pid = $ tail -1 /var/log/debug Mar 12 21:29:00 mykonos logmask[32528]: debug message, should appear Komunikaty o poziomie ważności mniejszym lub równym niż wskazany nie są wysyłane do logów. Kolejność jest taka: emerg alert crit err warning notice info debug $ tail -1 /var/log/auth.log Mar 12 21:52:09 mykonos logmask[731]: Critilal cond. while auth. 39 Rejestr systemowy, c.d. Wyciąg z dokumentacji man syslog (kody podsystemów) LOG_AUTHPRIV security/authorization messages (private) LOG_CRON clock daemon (cron and at) LOG_DAEMON system daemons without separate facility value LOG_FTP ftp daemon LOG_KERN kernel messages LOG_LOCAL0 through LOG_LOCAL7 reserved for local use LOG_LPR line printer subsystem LOG_MAIL mail subsystem LOG_NEWS USENET news subsystem LOG_SYSLOG messages generated internally by syslogd LOG_USER (default) generic user-level messages LOG_UUCP UUCP subsystem void openlog (const char *ident, int option, int facility); void syslog (int priority, const char *format,...); void closelog (void); 40 20

21 Rejestr systemowy, c.d. Wyciąg z dokumentacji man syslog (kody poziomów ważności, podano w kolejności zmniejszającej się ważności) LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG system is unusable action must be taken immediately critical conditions error conditions warning conditions normal, but significant, condition informational message debug-level message void openlog (const char *ident, int option, int facility); void syslog (int priority, const char *format,...); void closelog (void); 41 Rejestr systemowy, c.d. Wyciąg z dokumentacji man openlog (kody opcji) The option argument to openlog() is an OR of any of these: LOG_CONS Write directly to system console if there is an error while sending to system logger LOG_NDELAY Open the connection immediately (normally, the connection is opened when the first message is logged) LOG_NOWAIT Don't wait for child processes that may have been created while logging the message. (The GNU C library does not create a child process, so this option has no effect on Linux.) LOG_ODELAY The converse of LOG_NDELAY; opening of the connection is delayed until syslog() is called. (This is the default, and need not be specified) LOG_PERROR Print to stderr as well LOG_PID Include PID with each message void openlog (const char *ident, int option, int facility); void syslog (int priority, const char *format,...); void closelog (void); 42 21

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

Syslog. Dziennik systemowy

Syslog. Dziennik systemowy Syslog Dziennik systemowy System rejestrujący zdarzenia - syslog Jądro systemu, usługi systemowe i różne aplikacje zapisują informacje o swoim działaniu w dziennikach systemowych (logach). Dlatego pierwszym

Bardziej szczegółowo

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

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int

Bardziej szczegółowo

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

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011 Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 9 października 2011 Plan zajęć 1 Procesy w systemie Linux proces procesy macierzyste i potomne procesy zombie i sieroty 2 Funkcje systemowe pobieranie

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami

Bardziej szczegółowo

Administracja systemem Linux

Administracja systemem Linux Administracja systemem Linux mgr inż. Łukasz Kuczyński lkucz@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Administracja systemem Linux p. 1 Regularne Uruchamianie Programów cron Administracja

Bardziej szczegółowo

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

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! ) dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! ) 1 dynamiczny przydział pamięci void * memccpy (void * to, void * from, int c, int

Bardziej szczegółowo

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej. Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,

Bardziej szczegółowo

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

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011 Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Komunikacja za pomocą potoków. Tomasz Borzyszkowski Komunikacja za pomocą potoków Tomasz Borzyszkowski Wstęp Sygnały, omówione wcześniej, są użyteczne w sytuacjach błędnych lub innych wyjątkowych stanach programu, jednak nie nadają się do przekazywania

Bardziej szczegółowo

4.2 Sposób korzystania z l acza

4.2 Sposób korzystania z l acza 4.2 Sposób korzystania z l acza 31 Opis programu: Program procesu potomnego (linie 16 19) jest taki sam, jak w przyk ladzie na listingu 3. W procesie macierzystym nastepuje z kolei przekierowanie standardowego

Bardziej szczegółowo

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

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę

Bardziej szczegółowo

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

ISO/ANSI C - biblioteki ISO/ANSI C. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki. ISO/ANSI C - biblioteki Duży kod warto dzielić na fragmenty o wspólnej funkcjonalności (np. funkcje numeryczne, funkcje we/wy, funkcje dostępu do plików, itp.) Fragmenty należy umieszczać w oddzielnych plikach. Pliki dołączamy

Bardziej szczegółowo

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy) Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany

Bardziej szczegółowo

Serwer Syslog (po raz drugi) z wykorzystaniem systemu Linux.

Serwer Syslog (po raz drugi) z wykorzystaniem systemu Linux. 1 (Pobrane z slow7.pl) Serwer Syslog (po raz drugi) z wykorzystaniem systemu Linux. W systemie Linux za gromadzenie informacji o zdarzeniach odpowiedzialny jest mechanizm: rsyslog (dawniej syslog). Pliki

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

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

Rodzina protokołów TCP/IP. Aplikacja: ipconfig. Rodzina protokołów TCP/IP. Aplikacja: ipconfig. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Specyfikacja struktury FIXED_INFO Nazwa struktury:

Bardziej szczegółowo

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

Podstawy użytkowania Linux a

Podstawy użytkowania Linux a Podstawy użytkowania Linux a Systemy Operacyjne Mateusz Hołenko 3 marca 2013 Plan zajęć Rozpoczynanie pracy z systemem Podstawowe polecenia Pomoc systemowa Interpreter poleceń Mateusz Hołenko Podstawy

Bardziej szczegółowo

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Bash - wprowadzenie. Bash - wprowadzenie 1/39 Bash - wprowadzenie Bash - wprowadzenie 1/39 Bash - wprowadzenie 2/39 Czym jest bash? Rysunek : Zadanie powłoki to ukrycie wywołań systemowych Bash - wprowadzenie 3/39 Czym jest bash? Przykład polecenia:

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

Systemy Operacyjne - Operacje na plikach

Systemy Operacyjne - Operacje na plikach Systemy Operacyjne - Operacje na plikach Andrzej Stroiński Institute of Computer Science Poznań University of Technology 1 październik, 2012 Wprowadzenie do ANSI-C Pomoc systemowa man gcc man 2 write man

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

Podstawy zabezpieczania serwera. Marcin Bieńkowski

Podstawy zabezpieczania serwera. Marcin Bieńkowski komputerowa Podstawy zabezpieczania serwera Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski komputerowa () Podstawy zabezpieczania serwera 1 / 17 Z oczywistych przyczyn... Pojawia się tu

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 14 Samba Wprowadzenie Konfiguracja Zarządzanie użytkownikami Podłączanie zasobu - 1 - Wprowadzenie Samba służy do obsługi wymiany

Bardziej szczegółowo

1 Przygotował: mgr inż. Maciej Lasota

1 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 1 1/7 Język C Instrukcja laboratoryjna Temat: Programowanie w powłoce bash (shell scripting) 1 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do programowania w powłoce Skrypt powłoki

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

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

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak: Ćwiczenie nr 6 Temat: Operacje na łańcuchach znaków. Zagadnienia: Zasady pracy z łańcuchami tekstowymi (tablice wartości typu char). funkcje standardowe operacji na łańcuchach, funkcje I/O dla operacji

Bardziej szczegółowo

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

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: THREADS Mariusz Rudnicki 2016 1. Przygotowanie platformy i środowiska IDE. Przed uruchomieniem własnego kodu zwiększ priorytet procesu qconn

Bardziej szczegółowo

Zarządzanie użytkownikami w

Zarządzanie użytkownikami w Zarządzanie użytkownikami w systemie Linux Konta użytkowników Konto to wszystkie pliki, zasoby i informacje należące do użytkownika. Każdy użytkownik jest identyfikowany przez unikatową liczbę całkowitą

Bardziej szczegółowo

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

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

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen); 3.1. Określanie adresu połączonego hosta 3. #include int getpeername(int socket, struct sockaddr *addr, int *addrlen); Funkcja getpeername dostarcza adresu drugiej strony połączenia. Parametry:

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

Bardziej szczegółowo

2. Zarządzanie procesami

2. Zarządzanie procesami J. Ułasiewicz Komputery i systemy równoległe 1 2. Zarządzanie procesami 2.1 Funkcje zarządzania procesami Administrowanie procesami obejmuje następujące czynności: Tworzenie procesu. Testowanie atrybutów

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

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

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Obsługa plików Procesy

Obsługa plików Procesy Obsługa plików Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 15 października 2011 Plan zajęć 1 Obsługa plików 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach 3 Operacje

Bardziej szczegółowo

Technologie Informacyjne - Linux 2

Technologie Informacyjne - Linux 2 Technologie Informacyjne - 2 Instytut Matematyki Uniwersytet Gdański Powłoka - polecenia pośredniczace Polecenie grep wypisuje z pliku lub strumienia wejściowego te wiersze, które sa zgodne z podanym wyrażeniem.

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

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

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

Łącza nienazwane(potoki)

Łącza nienazwane(potoki) 8. Łącza nienazwane(potoki) Łącze (potok, ang. pipe) jest to urządzenie komunikacyjne pozwalające na przesyłanie informacji w jedną stronę. Jeden proces wysyła dane do łącza za pomocą funkcji write, zaś

Bardziej szczegółowo

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak Systemy operacyjne System operacyjny Linux - wstęp Anna Wojak 1 1 Wstęp Linux jest systemem z rodziny Unix. Pierwsza wersja systemu została opracowana w 1969 roku przez K.Thompsona i D.Ritchie Jest to

Bardziej szczegółowo

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1)

Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1) Proces instalacji systemu operacyjnego Linux Red Hat 7.3 (1) 1. Ustawiamy w biosie bootowanie systemu z CD-ROMu bądź z dyskietki (tworzymy wówczas dyskietki startowe). 2. Aby rozpocząć proces instalacji

Bardziej szczegółowo

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk Informatyka Wy-03 Dynamiczna alokacja pamięci, wyjątki mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 13.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00

Bardziej szczegółowo

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy

Bardziej szczegółowo

Linux Kernel III. Character devices

Linux Kernel III. Character devices Linux Kernel III Character devices Urządzenia systemu Linux (I) Character device Block device Network device Do urządzenia piszemy jak do pliku, Dozwolone działania: open, close, read, write, Np. /dev/tty1.

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013 Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli

Bardziej szczegółowo

Sygnały. 7. Sygnały (2005/2006)

Sygnały. 7. Sygnały (2005/2006) Sygnały Sygnał jest to informacja dla procesu, że wystąpiło jakieś zdarzenie. Sygnały mogą być wysyłane: z procesu do innego procesu (grupy procesów) z procesu do siebie samego z jądra do procesu Sygnały

Bardziej szczegółowo

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików Plik to uporządkowany ciąg danych Dostęp do danych w pliku jest sekwencyjny, tj. istnieje pojęcie elementu aktualnego (tzw. wskaźnika pliku). Możliwy dostęp do danych w pliku jest tylko tam, gdzie wskazuje

Bardziej szczegółowo

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh. Powłoka I Popularne implementacje W stylu sh (powłoki zdefiniowanej w POSIX) bash (najpopularniejsza) zsh ksh mksh W stylu csh csh tcsh 12 października 2018 1 / 16 Powłoka II Zachęta Komunikuje się z użytkownikiem

Bardziej szczegółowo

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

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

Stałe i zmienne znakowe. Stała znakowa: znak Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby

Bardziej szczegółowo

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików Plik to uporządkowany ciąg danych Dostęp do danych w pliku jest sekwencyjny, tj. istnieje pojęcie elementu aktualnego (tzw. wskaźnika pliku). Możliwy dostęp do danych w pliku jest tylko tam, gdzie wskazuje

Bardziej szczegółowo

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim

Bardziej szczegółowo

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

Bardziej szczegółowo

Aplikacja Sieciowa wątki po stronie klienta

Aplikacja Sieciowa wątki po stronie klienta Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się

Bardziej szczegółowo

Należy ściągnąć oprogramowanie Apache na platformę

Należy ściągnąć oprogramowanie Apache na platformę Programowanie Internetowe Język PHP - wprowadzenie 1. Instalacja Oracle+Apache+PHP Instalacja Apache, PHP, Oracle Programy i ich lokalizacja Oracle Database 10g Express Edition10.2 http://www.oracle.com/technology/products/database/

Bardziej szczegółowo

Współczesne systemy komputerowe

Współczesne systemy komputerowe 1. Powłoki, konfiguracja. Do komunikacji użytkownika z jądrem systemu operacyjnego służy powłoka systemu (shell), w linuksie jest dostępnych kilka powłok; o The C shell (/bin/csh, często link do /bin/tcsh);

Bardziej szczegółowo

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

Procesy. S. Samolej: Procesy

Procesy. S. Samolej: Procesy Procesy dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/ oraz Na materiałach

Bardziej szczegółowo

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ : Cookies Sesje Inne możliwości

Bardziej szczegółowo

Systemy operacyjne Programowanie w języku powłoki sh

Systemy operacyjne Programowanie w języku powłoki sh Systemy operacyjne Programowanie w języku powłoki sh [2] Programowanie w języku powłoki sh Powłoka, interpreter poleceń angshell jest programem uruchamianym standardowo po otwarciu sesji użytkownika przez

Bardziej szczegółowo

Znaki globalne w Linuxie

Znaki globalne w Linuxie Znaki globalne w Linuxie * reprezentuje jeden lub wiele znaków (wild-card character)? reprezentuje dokładnie jeden znak (wild-card character) [abcde] reprezentuje dokładnie jeden znak z wymienionych [a-e]

Bardziej szczegółowo

Data modyfikacji: 2013-08-14

Data modyfikacji: 2013-08-14 Data modyfikacji: 2013-08-14 Co zawiera ten dokument: Ten dokument przedstawia, w jaki sposób zainstalować program Kancelaris PLUS 4 za pomocą standardowego instalatora na serwerze MySQL w wersji 5.0 i

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Praca semestralna. Temat: Użytkownicy, grupy, autoryzacja i uprawnienia w systemie Linux. CENTRUM EDUKACJI AKADEMIA SUKCESU

Praca semestralna. Temat: Użytkownicy, grupy, autoryzacja i uprawnienia w systemie Linux. CENTRUM EDUKACJI AKADEMIA SUKCESU CENTRUM EDUKACJI AKADEMIA SUKCESU Praca semestralna Kierunek: Technik Informatyk Przedmiot: Systemy Operacyjne i Sieci Komputerowe Semestr: II Wykładowca : mgr inż. Adam Aleksiejczuk Temat: Użytkownicy,

Bardziej szczegółowo

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

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

https://portal.clusterix.pl:8443 trainxx tramxx

https://portal.clusterix.pl:8443 trainxx tramxx Logowanie 1. Otworzyć w oknie przeglądarki adres: https://portal.clusterix.pl:8443 2. Zalogować się używając konta, użytkownik: trainxx, hasło: tramxx Delegacja certyfikatu proxy 1. Zalogować poprzez ssh

Bardziej szczegółowo

Packet Tracer - Nawigacja w IOS

Packet Tracer - Nawigacja w IOS Topologia Cele Część 1: Podstawowe połączenia, dostęp do CLI i korzystanie z pomocy. Część 2: Poznanie trybu EXEC. Część 3: Ustawianie zegara. Wprowadzenie W tym ćwiczeniu, będziesz ćwiczyć umiejętności

Bardziej szczegółowo

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

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19 Systemy Operacyjne Programowanie w języku powłoki sh dr inż. Tomasz Jordan Kruk T.Kruk@ia.pw.edu.pl Instytut Automatyki i Informatyki Stosowanej Politechnika Warszawska Systemy operacyjne / Programowanie

Bardziej szczegółowo

Procesy w systemach UNIX i Linux

Procesy w systemach UNIX i Linux SOE Systemy Operacyjne Wykład 5 Procesy w systemach UNIX i Linux dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Procesy Proces wykonujący się program identyfikator PID Procesy

Bardziej szczegółowo

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

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

1. Tworzenie nowego projektu.

1. Tworzenie nowego projektu. Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty

Bardziej szczegółowo

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) wiczenie trzecie Temat: Potoki i ł cza nazwane w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Komunikacja z wykorzystaniem

Bardziej szczegółowo

KUP KSIĄŻKĘ NA: PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA

KUP KSIĄŻKĘ NA:   PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA KUP KSIĄŻKĘ NA: WWW.PRAKTYCZNEPHP.PL PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA KOMUNIKATY DLA UŻYTKOWNIKA W większości aplikacji potrzebujesz mieć możliwość powiadomienia użytkownika o rezultacie

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

1 Obsługiwane funkcje wyzwalaczy

1 Obsługiwane funkcje wyzwalaczy 2016/10/11 12:29 1/10 1 Obsługiwane funkcje wyzwalaczy 1 Obsługiwane funkcje wyzwalaczy Wszystkie funkcje obsługiwane w: wyrażeniach wyzwalaczy są wyszczególnione poniżej: wartości: float, int, str, text,

Bardziej szczegółowo

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego. Czas realizacji zajęć: 135 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Zmienne śrowiskowe oraz ich eksportowanie, argumenty

Bardziej szczegółowo

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Pawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07 PHP i bazy danych Paweł Kasprowski pawel@kasprowski.pl Użycie baz danych Bazy danych używane są w 90% aplikacji PHP Najczęściej jest to MySQL Funkcje dotyczące baz danych używają języka SQL Przydaje się

Bardziej szczegółowo

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych Jacek Matulewski, Sławek Orłowski http://www.phys.uni.torun.pl/~jacek/ Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych Wersja α Ćwiczenia Toruń, 20 grudnia 2005 Najnowsza wersja tego dokumentu

Bardziej szczegółowo

Administracja serwerami

Administracja serwerami 1. UID i GID. Każdy użytkownik w systemie ma nazwę i swój unikalny numer UID (User ID), użytkownik root ma UID = 0; Użytkownicy mogą być łączeni w grupy; Grpy mają nazwy i unikalne numery GID (Group ID),

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc. Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez

Bardziej szczegółowo

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe

Bardziej szczegółowo

Model procesu w systemie Linux. Tomasz Borzyszkowski

Model procesu w systemie Linux. Tomasz Borzyszkowski Model procesu w systemie Linux Tomasz Borzyszkowski Definicja procesu klasyka Definicja [M.Bach WNT95] Proces jest wykonaniem programu i składa się ze zbiorowości bajtów, które CPU interpretuje jako instrukcje

Bardziej szczegółowo