Jelzések és kezelésük
|
|
- Gábor Gáspár
- 6 évvel ezelőtt
- Látták:
Átírás
1 Jelzések és kezelésük A jelzés egy nagyon egyszerű kommunikációs forma, az információ egy speciális egész szám, amelyet úgy is szoktak nevezni, hogy a jelzés típusa/értéke (signum). Jelzést általában a rendszer szokott küldeni valamilyen hiba vagy esemény bekövetkezésekor (pl. érvénytelen memóriahivatkozás, 0-val osztás, gyerek folyamat terminált stb.), de jelzést küldhetnek a folyamatok is egymásnak. Jelzések segítségével kommunikálhatnak egymással a folyamatok, vagy kommunikációjuk összehangolására, szinkronizációra is fel tudják használni a jelzéseket. Ha egy folyamat jelzést kap, akkor a következőképpen reagálhat: 1. Elkapja a jelzést és végrehajt egy jelzéskezelő függvényt (kivéve SIGKILL és SIGSTOP) 2. Figyelmen kívül hagyja (ignore) a jelzést (kivéve SIGKILL és SIGSTOP). 3. A jelzéshez tartozó alapértelmezett (default) művelet hajtódik végre. A jelzésértékekhez SIG kezdetű neveket definiáltak (makro), amely elnevezések utalnak a felhasználási módjukra (pl.: SIGTERM = terminálj). A jelzésértékekről, alapértelmezett működésükről a signal(7)-es man oldalon tájékozódhatunk, lássunk ebből egy részletet: The entries in the "Action" column of the table specify the default action for the signal, as follows: Term Default action is to terminate the process. Ign Default action is to ignore the signal. Core Default action is to terminate the process and dump core. Stop Default action is to stop the process. First the signals described in the original POSIX.1 standard. Signal Value Action Comment SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating poin exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Term Termination signal SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 SIGCHLD 20,17,18 Ign Child stopped or terminated SIGCONT 19,18,25 Continue if stopped SIGSTOP 17,19,23 Stop Stop process SIGTSTP 18,20,24 Stop Stop typed at tty SIGTTIN 21,21,26 Stop tty input for background process SIGTTOU 22,22,27 Stop tty output for background process A fenti táblázatból látszik, hogy ha a SIGTERM jelzést, nem kezeljük le, és nem hagyatjuk figyelmen kívül (ignore), akkor alapértelmezésként (Term) a folyamatot terminálja a rendszert, míg a SIGCHLD jelzés figyelmen kívül lesz hagyva (Ign) ugyanilyen esetben. A SIGKILL és SIGSTOP jelzések esetén, mindig az alapértelmezett működés fog életbe lépni, nem lehet kezelni vagy figyelmen kívül hagyni őket.
2 A jelzéskezelő függvényt a rendszer hívja meg a jelzés beérkezésekor, ezért meghatározott a függvény prototípusa. Egy paramétere van, amely megegyezik az elkapott jelzés értékével és nincs visszatérési értéke. Tehát a jelzéskezelő függvények típusa: void f(int signum). A signal nevű függvénnyel tudjuk beállítani, hogy adott jelzésérték esetén a folyamat miként reagáljon a jelzésre. A függvény meghívásakor a rendszer eltárolja, hogy mi a teendő, ha a folyamat a későbbiekben kap egy adott jelzést. Megadhatjuk a signal függvénynek a jelzéskezelő függvény címét, ha szeretnénk elkapni és kezelni a jelzést. #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); Paraméterek: signum: a jelzés értéke handler: a következők egyike lehet a jelzéskezelő függvény címe (ha elkapni és kezelni akarjuk) SIG_IGN: figyelmen kívül hagyás (ignore) SIG_DFL: alapértelmezett műveletet (default) Visszatérési érték: jelzéskezelő függvény címe vagy hiba esetén SIG_ERR Hibák: EINVAL: érvénytelen jelzésérték A következő példában megpróbálunk szegmens hibát előidézni, és elkapni a rendszer által küldött SIGSEGV jelzést. #include<stdlib.h> A jelzéskezelő függvény switch(signum){ case SIGSEGV: puts("szegmens hiba"); break; default: puts("egyéb"); exit(1); A jelzéskezelő függvény bejegyzése. Első paraméter a jelzésérték, második a jelzéskezelő címe. int *p; signal(sigsegv,kezelo); p[3] = 3; Itt probálunk szegmenshibát okozni. A példában jelzéskezelő eljárás egy exit függvényt hívott, amely a folyamatot terminálta. Ha a jelzéskezelő eljárás nem kiugrással ér véget (return), akkor oda térünk vissza, ahonnan kiugrottunk (néhány függvénytől eltekintve majdnem oda, lásd később), tehát a szegmenshibát okozó memóriahivatkozáshoz. Ezt megismételve persze újra szegmens hibát kapunk. Ha többször is meghívjuk a signal függvényt ugyan azzal a jelzés típussal, akkor a rendszer az utolsó hibátlan hívás eredményét tárolja el. Nézzünk erre egy példát, amelyben kipróbáljuk a SIGINT jelzés esetén
3 alkalmazható háromféle működési módot. A Ctrl+C billentyű leütés hatására a parancsértelmező folyamat küld egy SIGINT jelzést a folyamatnak. #include<unistd.h> puts("signal kezelő"); Az indulás után a folyamat bejegyezteti a jelzéskezelő függvényt. Ha 5 másodpercen belül kapunk SIGINT jelzést, akkor a kezelő lefut, majd a folyamat folytatja a működést ott, ahol abbahagyta (majdnem ott, mivel nem várja ki a sleep által beállított 5 másodpercet). signal(sigint,kezelo); puts("sigint kezelés"); sleep(5); signal(sigint,sig_ign); puts("sigint ignore"); sleep(5); signal (SIGINT, SIG_DFL); puts("sigint default"); sleep(5); Ezután a SIG_IGN konstans segítségével tudatja a rendszerrel, hogy figyelmen kívül akarja hagyni a SIGINT jelzést. Az ezután leütött Ctrl+C billentyű valóban figyelmen kívül lesz hagyva. Végül a SIG_DFL konstans segítségével az alapértelmezett működésre váltunk. Ekkor leütött Ctrl+C billntyű hatására véget ér a folyamat. Blokkolt folyamatok esetén, ha megszakíthatatlan a blokkolás, akkor rendszer visszatartja a jelzést, amíg a folyamat nem lesz aktív, megszakítható blokkolás esetén a rendszer felébreszti a folyamatot, hogy kezelhesse a jelzést (pl.: beolvasás terminálról). Amikor egy jelzést kezelünk közben az illető jelzés blokkolva van, u.i. problémát okozhat, ha egy befejezetlen jelzéskezelés közben újra indulna a kezelő. Ez a blokkolás nem a figyelmen kívül hagyó művelet (SIG_IGN), hanem a rendszer a háttérben kezel egy blokkolt jelzések halmazát, amelyet a felhasználói folyamatok is elérhetnek, módosíthatnak (sigprocmask). A jelzéskezelő végrehajtása után a rendszer a törli az illető jelzés blokkolását. A blokkolás alatt beérkezett ugyanolyan jelzésekből egy darabot kap meg a folyamat a blokkolás feloldása után. A SIGKILL és SIGSTOP jelzéseket nem lehet blokkolni. Jelzéskezelő eljárások készítése során, a jelzéskezelőből való visszatérésre többféle szokásos módszer terjedt el: 1. A jelzéskezelő eljárásban kilépünk a programból. 2. A jelzéskezelő eljárás végrehajtása után visszatérünk oda, ahonnan kiugrottunk. 3. A jelzéskezelő eljárásból a folyamat egy korábbi pontjába ugrunk vissza. 1. A jelzéskezelő eljárásban kilépünk a programból. Ha a jelzés alapértelmezett működése a terminálás, akkor nem az exit függvénnyel szokás kilépni, hanem a folyamat átállítja a jelzéskezelést alapértelmezett működésre és küld magának (raise) egy jelzést. Ekkor a szülő folyamat értesül róla (return status), hogy (milyen) jelzés szakította meg a folyamatot.
4 #include<stdlib.h> Kilépés előtti tevékenységek (fájlok lezárása stb.) switch(signum){ case SIGSEGV: //KEZELÉS... signal(sigsegv,sig_dfl); raise(sigsegv); break; default: puts("egyéb"); int *p; signal(sigsegv,kezelo); p[3] = 3; Átállítás alapértelmezett jelzéskezelésre SIGSEGV jelzés küldés saját magának 2. A jelzéskezelő eljárás végrehajtása után visszatérünk oda, ahonnan kiugrottunk. Ha a jelzéskezelő eljárás nem a programból való kilépéssel ér véget (exit), akkor általában oda térünk vissza, ahonnan kiugrottunk. Vannak olyan függvények, amelyek végrehajtása közben beérkezett jelzés esetén, a függvény már nem folytatható és a függvény EINTR hibával ér véget. Ilyenkor a jelzéskezelő eljárás lefutása után, a végrehajtás a függvény után fog folytatódni. Ezen függvények hibalistájában általában szerepel az EINTR hiba (pl.: read, write, vagy a korábbi példában látott sleep függvény, amely a beérkezett jelzés hatására EINTR hibával véget ér és nem várja ki a megadott időtartamig még fennmaradó időt.) Ezeknél a függvényeknél (open, read, write stb.) általában azt szeretnénk, hogy a függvény újra végrehajtódjon. Ezt megtehetjük, hogy addig ismételjük ciklusban, amíg a sikertelen a végrehajtás, és a hiba oka EINTR. Erre szolgál a TEMP_FAILURE_RETRY makro: #ifndef TEMP_FAILURE_RETRY #define TEMP_FAILURE_RETRY(expression) \ ( extension \ ({ long int result; \ do result = (long int) (expression); \ while ( result == -1L && errno == EINTR); \ result; )) #endif Int main(){ TEMP_FAILURE_RETRY(read(fd,buffer,sizeof(buffer))); 3. A jelzéskezelő eljárásból a folyamat egy korábbi pontjába ugrunk vissza. Ezt megtehetjük a siglongjmp függvénnyel, amelynek segítségével visszaugorhatunk a sigsetjmp függvény által elmentett környezetbe. Olyan függvénybe persze nem léphetünk vissza, amelyik már véget ért.
5 A következő példában 0-val osztunk, aminek következtében SIGFPE jelzést kapunk. A jelzéskezelőben átállítjuk a változó értékét 1-re, majd visszaugrunk az osztás elé és újra elvégezzük. #include<stdlib.h> #include<setjmp.h> int x; sigjmp_buf a; switch(signum){ case SIGFPE: x=1; siglongjmp(a,1); break; default: puts("egyéb"); x=0; signal(sigfpe,kezelo); sigsetjmp(a,sigfpe); printf("1/x = %d\n",1/x); Átállítjuk x-et 1-re, majd ugrunk az a változóba mentett környezetbe. Itt mentjük el a környezetett, amikor először járunk itt, majd ide fogunk vissza ugrani. Amikor először járunk itt, akkor x=0, tehát nullával osztunk. Amikor másodszor, akkor x=1. (Ha longjmp-vel ugrunk ki a jelzéskezelőből, a jelzés blokkolását a rendszer nem oldja fel. Ezt nekünk kell megtenni a sigprocmask függvénnyel. A siglongjmp esetén erre nincs szükség.)
6 Jelzések küldése Jelzést küldeni a kill függvénnyel tudunk. Nem minden folyamatnak küldhetünk jelzést, a küldőnek rendszergazdaként kell futnia, vagy a küldő valódi felhasználó azonosítójának meg kell egyeznie a címzett felhasználó azonosítójával. #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int signum); Paraméterek: pid: címzett folyamat(ok) meghatározására szolgáló paraméter ha pid>0: folyamat, amelynek azonosítója=pid ha pid=0: hívó folyamattal azonos csoportban (process group) lévők ha pid=-1: minden folyamat, akinek jogosult küldeni (kivéve init) ha pid<-1: olyan folyamatok, amelyek csoportazonosítója=-pid signum: a jelzés értéke ha signum=0, akkor nem küld szignált, hanem teszteli, hogy létezik-e a folyamat vagy a csoport (sikeres visszatérési érték esetén létezik) Visszatérési érték: siker esetén 0 hiba esetén -1 Hibák: EINVAL: érvénytelen szignál típus/érték EPERM: nincs jogosultságunk a szignált küldeni a folyamatnak ESRCH: a pid folyamat nem létezik A következő példában a standard inputról beolvasott pid-del rendelkező folyamatnak próbálunk meg SIGTERM szignált küldeni, majd a perror függvény segítségével meggyőződünk a sikerességéről. int pid; printf("pid: "); scanf("%d",&pid); kill(pid,sigterm); perror("kill"); Lássunk még néhány hasznos függvényt: raise: szignált küld a saját magának pause: szignál beérkezéséig várakozik sigprocmask: blokkolt szignálok kezelése sigaction: szignálok kezelése (többet tud, mint a signal függvény)
7 Javasolt feladatok: 1. Írjon programot, amely fork-kal létrehoz egy gyerek folyamatot. A gyerek folyamat másodpercenként írja ki a számokat 0-tól 10-ig, a szülő várjon 3 másodpercet, majd küldjön egy SIGTERM jelzést a gyereknek, majd újabb 3 másodperc múlva egy SIGKILL jelzést. A gyerek folyamat kezelje le a SIGTERM jelzést (írja ki, hogy "SIGTERM jelzést kaptam"). 2. Írjon programot, amely az indítási paraméterként (argv[1]) megadott nevű folyamatoknak küld SIGTERM jelzést. Összefoglalás: jelzéskezelő függvény: void kezelo(int signum); jelzéskezelő bejegyzése: signal jelzés küldése: kill Egy folyamat a jelzésre a következőképpen reagálhat: 1. Elkapja a jelzést és végrehajt egy jelzéskezelő függvényt. 2. Figyelmen kívül hagyja a jelzést (SIG_IGN). 3. A jelzéshez tartozó alapértelmezett művelet hajtódik végre (SIG_DFL). Az alapértelmezett működés a jelzés értékétől függ: term, ignore, stop, continue. A SIGKILL és SIGSTOP jelzések esetén, mindig az alapértelmezett működés fog életbe lépni, nem lehet kezelni, figyelmen kívül hagyni, és nem lehet blokkolni. A jelzéskezelő futása során az adott jelzés blokkolva van, nehogy a kezelő újrainduljon (ezt a blokkolási listát a folyamat maga is tudja kezelni a sigprocmask függvénnyel). Jelzéskezelő eljárások készítése során, a jelzéskezelőből való visszatérésre többféle szokásos módszer terjedt el: 1. A jelzéskezelő eljárásban kilépünk a programból. (exit helyett SIG_DFL-re visszaállunk, majd raise) 2. A jelzéskezelő eljárás végrehajtása után visszatérünk oda, ahonnan kiugrottunk (néhány függvény esetén ne feledkezzünk meg TEMP_FAILURE_RETRY makróról). 3. A jelzéskezelő eljárásból a folyamat egy korábbi pontjába ugrunk vissza (sigsetjmp, soglongjmp).
UNIX folyamatok kommunikációja
UNIX folyamatok kommunikációja kiegészítő fóliák az előadásokhoz Mészáros Tamás http://www.mit.bme.hu/~meszaros/ Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék
Operációs rendszerek. 4. gyakorlat: Szignálok küldése, kezelése
Operációs rendszerek 4. gyakorlat: Szignálok küldése, kezelése Ajánlott irodalom UNIX programozáshoz: Kernighan & Pike: A Unix operációs rendszer Stewens: Advanced Programming in the UNIX Environment (APUE)
OPERÁCIÓS RENDSZEREK. A mai program. Hiba és eseménykezelés. Alapfogalmak. Eseménykezelés, szignálozás
OPERÁCIÓS RENDSZEREK Eseménykezelés, szignálozás A mai program Alapfogalmak: esemény, jelződés, kezelés Megszakítások és kivételek Szignálozás Rendelkezés szignálról (SVID, POSIX) Postázás Esettanulmányok
UNIX folyamatok kommunikációja
UNIX folyamatok kommunikációja kiegészítő fóliák az előadásokhoz Mészáros Tamás http://home.mit.bme.hu/~meszaros/ Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek
OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS
OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS A PROCESSZ A PROCESSZ Program: a végrehajtandó utasítások sorozata Processz: a végrehajtás alatt levő program ÁLLAPOTOK LÉTREHOZÁS ALATT Belépés Kilépés TERMINÁLT
UNIX: folyamatok kommunikációja
UNIX: folyamatok kommunikációja kiegészítő fóliák az előadásokhoz Mészáros Tamás http://home.mit.bme.hu/~meszaros/ Budapesti Műszaki Egyetem Méréstechnika és Információs Rendszerek Tanszék 1 A kommunikáció
Vezérlési szerkezetek
Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását
Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15
Matlab alapok Baran Ágnes Elágazások, függvények Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15 Logikai kifejezések =, ==, = (két mátrixra is alkalmazhatóak, ilyenkor elemenként történik
Operációs rendszerek 1.
Operációs rendszerek 1. Folyamatok Balla Tibor balla.tibor@inf.unideb.hu Processzus - Folyamat Az OR főbb feladatai között szerepel a végrehajtási környezet biztosítása a futtatandó programok és alkalmazások
A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere
2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda
7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.
7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. A gyakorlat célja: 1. A shell vezérlő szerkezetei használatának gyakorlása. A használt vezérlő szerkezetek: if/else/fi, for, while while, select, case,
Programozás I. 5. Előadás: Függvények
Programozás I 5. Előadás: Függvények Függvény Egy alprogram Egy C program általában több kisméretű, könnyen értelmezhető függvényből áll Egy függvény megtalálható minden C programban: ez a main függvény
Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek
Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő
S z á m í t ó g é p e s a l a p i s m e r e t e k
S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami
Operációs rendszerek
Operációs rendszerek 10. előadás - Holtpont kezelés, szignálok 2006/2007. II. félév Dr. Török Levente Links A. Tanenbaum: Op. rendszerek http://www.iit.uni-miskolc.hu/%7evadasz/geial201/jegyzet/3rd.pdf
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának
BASH script programozás II. Vezérlési szerkezetek
06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van
1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok
Számítógépes szimulációk 1. Bevezetés BME Fizika Intézet 2015. szeptember 9. Bevezetés A félév menete C-ismétlés, 1. rész Oktatók: Nagyfalusi Balázs: nagyfalusi@phy.bme.hu, F3 211. : tcsaba@eik.bme.hu,
Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE
Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor
1. Alapok. #!/bin/bash
1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk
Programozás 6. Dr. Iványi Péter
Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak
A programozás alapjai
A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,
Concurrency in Swing
Concurrency in Swing A szálkezelés a swing alkalmazásokban is fontos. Cél egy olyan felhasználói felület készítése, amely soha nem fagy, mindig válaszol a felhasználói interakciókra, bármit is csináljon
3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények Dr. Bécsi Tamás 6. Előadás Bevezetés Egy idő után az egyetlen main(){ függvénnyel megírt programunk túl nagy méretű lesz. Vannak
A programozás alapjai 1 Rekurzió
A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder
Architektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
Kivételek, kivételkezelés a C++ nyelvben
2009. Kivételek, kivételkezelés a C++ nyelvben Haladó C++ programozás Kurucz Attila ELTE - IK 2009.06.09. Tartalomjegyzék Tartalomjegyzék... 2 Mi a kivételkezelés?... 3 Alapfogalmak... 3 Kivétel... 3 Try
Imperatív programozás
Imperatív programozás 7. Előadás Függvények, láthatóság (folytatás) Modulok Kivételkezelés Beágyazott függvény def lnko(x, y): def kivon(m, n): return m - n while not (x == y) : if x > y : x = kivon(x,y)
Programozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,
Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)
Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index
HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
Vezérlési szerkezetek. Szelekció Ciklusok
Vezérlési szerkezetek Szelekció Ciklusok Szelekciós vezérlés A program egy feltétel teljesülése alapján választja ki, hogy mely műveleteket hajtsa végre. Alakja: if ( feltétel ) { műveletek, ha feltétel
6. fejezet: Ciklusok
6. fejezet: Ciklusok Mint a nyelvekben általában, itt is léteznek ciklusok. Az alapvető három ciklus-típus: elöltesztelő, hátultesztelő és számláló. Lássuk ezeket sorban! Elöltesztelő = while. A while
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana
A MATLAB alapjai Kezdő lépések - Matlab Promt: >> - Help: >> help sqrt >> doc sqrt - Kilépés: >> quit >> exit >> Futó script leállítása: >> ctrl+c - Változók listásása >> who >> whos - Változók törlése
PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT
alapjai, bevezetés Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu PHP Personal Home Page (Tools) Script nyelv -> interpretált Elsősorban weboldal (dinamikus) tartalmak előállítására
Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe
Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével
Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
Task-alapú párhuzamosítás C# környezetben
Task-alapú párhuzamosítás C# környezetben OE-NIK 1 Task Aszinkron elvégzett feladat A háttérben egy Thread vagy egy ThreadPool egy eleme van: magasabb absztrakciós szinten dolgozunk ThreadPool Gyakorlatilag
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
Internet programozása. 3. előadás
Internet programozása 3. előadás Áttekintés Hogyan használjuk az if szerkezetet arra, hogy bizonyos sorok csak adott feltételek teljesülése mellett hajtódjanak végre? Hogyan adhatunk meg csak bizonyos
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 3. előadás A Math osztály (System.Math) Metódus Művelet Math.Sin(x) sin(x), ahol az x szög értékét radiánban
Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE
Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE 2015-16 Classic Empire - A turn Based Wargame Classic Empire is a real time, multiplayer, Internet-based game, featuring military, diplomatic, and economic
Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.
Függvény pointer Több feladat közül futási időben döntöm el, hogy melyiket hajtom végre. A függvényre mutató pointer a függvény kódjának a címére mutat, azon keresztül meghívhatom a függvényt. A pointernek
A C programozási nyelv VI. Parancssori argumentumok File kezelés
A C programozási nyelv VI. Parancssori argumentumok File kezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv VI. (Parancssori argumentum, file kezelés) CBEV6 / 1 Parancssori
Socket programozás Példák
Socket programozás Példák Áttekintés Client Server socket socket bind connect Connection request listen accept Client / Server Session write read read write close EOF read close 3 Select demo Beej s guide
Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu
A C programozási nyelv II. Utasítások. A függvény.
A C programozási nyelv II. Utasítások. A függvény. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv II (Utasítások, fuggvények) CBEV2 / 1 Kifejezés utasítás Kifejezés utasítás, blokk
Óbudai Egyetem. C programozási nyelv
Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási nyelv II. Dr. Schuster György 2016. március 12. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C2016. programozási március 12. nyelv Utasításo
és az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Programozás C++ -ban
Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több
Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Powershell 2. gyakorlat
Szkriptek készítése, folytatás Könyvtárban levő bejegyzések száma, mérete (Új: measure-object) /batch/ megszamol2.ps1 $hossz=(get-childitem measure-object -property length).count write-host ("konyvtarban
Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Reguláris kifejezések - alapok, BASH Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor
Programozás alapjai gyakorlat. 2. gyakorlat C alapok
Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel
Programozás C és C++ -ban
Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új
C++ programozási nyelv
C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/12 Tartalomjegyzék Miért
Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek
Linux alapok Parancsok általános alakja parancs kapcsolók paraméterek Könyvtárszerkezet abszolút útvonal útvonal megadása a gyökérből kiindulva / gyökérkönyvtár relatív útvonal útvonal megadása az aktuális
Programozás II. ATM példa Dr. Iványi Péter
Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert
A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.
Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód
Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
AWK programozás, minták, vezérlési szerkezetek
10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa
Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 3. előadás Vezérlési szerkezetek Elágazás Gyakran előfordul, hogy meg kell vizsgálnunk egy állítást, és attól függően, hogy igaz vagy hamis, a programnak más-más
Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna
Processzusok 1 Uniprogramozás Program A futás várakozás futás várakozás Idő A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna 2 Multiprogramozás Program A futás vár futás
/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;
1. Írjunk programot, amely függvény alkalmazásával meghatározza n a értékét, (a az n-edik gyök alatt), az általunk megadott pontossággal, iterációval. Az iteráció képlete a következő: ahol : n-1 x uj =
Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása
Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása 1. feladat: Eldönteni egy számról, hogy pozitív, negatív vagy 0. Próbálja megoldani a feladatot switch szerkezettel is. Mikor használható
SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók
SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:
Mintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
Osztályok. 4. gyakorlat
Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)
1 Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1. A folyamat (processzus, process) fogalma 2. Folyamatok: műveletek, állapotok, hierarchia 3. Szálak (threads)
C programozási nyelv
C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György
C programozás. 1 óra Bevezetés
C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}
InFo-Tech emelt díjas SMS szolgáltatás. kommunikációs protokollja. Ver.: 2.1
InFo-Tech emelt díjas SMS szolgáltatás kommunikációs protokollja Ver.: 2.1 InFo-Tech SMS protokoll Az emelt díjas SMS szolgáltatással kapcsolatos beállításokat az adminisztrációs felületen végezheti el.
Bevezetés a Python programozási nyelvbe
Bevezetés a Python programozási nyelvbe 8. Gyakorlat modulok random számok (utolsó módosítás: 2017. aug. 3.) Szathmáry László Debreceni Egyetem Informatikai Kar 2017-2018, 1. félév Modulok Amint a programunk
4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.
Linux fájlrendszerek. 4. Laborgyakorlat Előző gyakorlaton, már volt szó a fájlrendszerekről, mikor a mount parancs -t kapcsolójáról volt szó. Linux alatt, az egyes fájlokhoz való hozzáférések miatt, a
Folyamatok követése. Tartalom. 1. Folyamatok
Tartalom Folyamatok követése 1.Folyamatok...1 2.A folyamatazonosító (process id vagy pid)...3 3.A Unix feladat (job) fogalma...4 4.A wait parancs...6 5.A folyamatok követése a ps paranccsal...6 5.1.A top
Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: Név: vp.05@hotmail.com Kurzuskód:
Szerző Név: Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: vp.05@hotmail.com Kurzuskód: IP-08PAEG/27 Gyakorlatvezető neve: Kőhegyi János Feladatsorszám: 20 1 Tartalom Szerző... 1 Felhasználói dokumentáció...
C programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.
OOP #6 (VMT és DMT) v1.0 2003.03.07. 19:33:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_06-1 - E jegyzet másolata
Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában
Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
A rendszer célja. Funkciók
A rendszer célja A Megrendelő fejleszteni kívánja a kommunikációját. A mindennapi munka során egyre nagyobb igény jelentkezik az üzenetváltások pontos kezelésére, naplózására, nagyméretű, illetve sok címzettet
Java és web programozás
Budapesti Műszaki Egyetem 2015. 04. 08. 9. Előadás Kivétel kezelés a kivétel (exception) egy esemény, mely futás közben megbontja a program normális futási folyamatát például kivétel dobódik amikor 0-val
Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik
Programozás I. gyakorlat
Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt
Eseménykezelés. Aszinkron kommunikáció
Eseménykezelés Aszinkron kommunikáció Feladat Készítsünk egy stoppert, amely másodpercenként jelzi a múló időt. Ez a folyamat egy adott jelzés hatására induljon el; ugyanezen jelzés ismétléseinek hatására
A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.
Feladat Készítsen egy egész számokat tartalmazó zsák típust! A zsákot dinamikusan lefoglalt tömb segítségével ábrázolja! Implementálja a szokásos műveleteket (elem betevése, kivétele, üres-e a halmaz,
Programozás I gyakorlat. 10. Stringek, mutatók
Programozás I gyakorlat 10. Stringek, mutatók Karakter típus A char típusú változókat karakerként is kiírhatjuk: #include char c = 'A'; printf("%c\n", c); c = 80; printf("%c\n", c); printf("%c\n",
Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java
Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:
Dr. Schuster György október 14.
Real-time operációs rendszerek RTOS 2011. október 14. A fordítás vázlata prog.c Előfeldolgozó Átmenti állomány Fordító prog.obj más.obj-tek könyvtárak indító kód Linker futtatható kód Ismétlés Előfeldolgozó
SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek
SZERVER OLDALI JAVASCRIPT 3. hét Javascript nyelvi elemek NYELVI ALAPOK: Ez sajnos igen száraz anyag, Viszont a megértékhez és a nyelv elsajátításához kell. Próbáljuk meg random gifekkel feldobni. MIRŐL
Operációs rendszerek. 6. gyakorlat: Processzusok közti kommunikáció (osztott memória, üzenetsor)
Operációs rendszerek 6. gyakorlat: Processzusok közti kommunikáció (osztott memória, üzenetsor) A UNIX System V Release-óta minden rendszer biztosít három egyszerűabsztrakciót a processzusok közti kommunikáció
Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)
1 Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication) 1. A folyamat (processzus, process) fogalma 2. Folyamatok: műveletek, állapotok, hierarchia 3. Szálak (threads)
Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó
Szerző Név: Lővei Péter ETR-azonosító: LOPSAAI.ELTE Drótposta-cím: petyalovei@gmail.com Kurzuskód: IP-08PAEG/25 Gyakorlatvezető neve: Daiki Tennó Feladatsorszám: 11 1 Tartalom Szerző... 1 Tartalom... 2
Hírlevél küldés kézikönyv
Hírlevél küldés kézikönyv Címlisták rögzítése 1., Belépve az Office-ba (felhasználónév: sovidektcc) először létre kell hozni Címkategóriákat. Ezeket a Megkeresések menü Címkategóriák almenüjében lehet
HP LaserJet M9040/9050 MFP Gyors referencia útmutató
HP LaserJet M9040/9050 MFP Gyors referencia útmutató Művelet: Másolás Digitális küldés Faxolás Feladatok tárolása www.hp.com/support/ljm9040mfp www.hp.com/support/ljm9050mfp www.hp.com/go/usemymfp Gyors
BATCH Programozás. Tartalomjegyzék
BATCH Programozás Tartalomjegyzék 1. Bevezetés 2. Általános információk a batch file-okról 3. A legegyszerűbb batch file-ok 4. Paraméterezhető batch file-ok 5. Gyakran használatos batch parancsok 6. Elágazások