Bsys2 - Funktionen
Bsys2 - Funktionen
Bsys2 - Funktionen
-
- 1 / 77
-
Flashcards
char * getenv(const char * key)
Gibt Wert von Umgebungsvariable key zurück
int setenv(const char *key, const char *value, int overwrite)
wenn key schon vorhanden und overwrite !=0 überschreiben von bestehendem Wert, sonst neue Umgebungsvariable erstellen und key / value kopieren
int unsetenv(const char* key);
Entfernt Umgebungsvariable mit Key key
int putenv(char *kvp)
Fügt den Pointer kvp zum Umgebungsvariablen Array dazu, String wird nicht kopiert
pid_t fork(void)
erzeugt exakte Kopie von Prozess ausser eigene Prozess-ID und Parent-Prozess-ID und führt Code bei beiden Prozessen am gleichen Ort (nach fork) fort In Parent wird bei Erfolg die Prozess-ID des Childs zurückgegeben und im Child gibt die Funktion 0 zurück
pid_t wait (int *status)
Unterbricht den Prozess bis einer seiner Child-Prozessen beendet wurde (Out Parameter mit Statusparametern)
pid_t waitpid(pid_t pid, int *status, int options)
Wie wait() aber es kann spezifiziert werden auf welchen Child-Prozess gewartet werden soll (pid == -1 auf irgendeinen => wait)
unsigned int sleep(unsignet int seconds)
Unterbricht den Prozess für Anzahl Sekunden
void exit (int code)
Beendet Prozess mit in code definiertem Wert
int atexit(void (*function)(void))
Registriert Funktion zum Ausführen bevor Prozess beendet wird (Aufräumarbeiten)
nt pthread_create(pthread_t *thead_id, pthread_attr_t const * attributes, void * (*start_function) (void *), void *argument)
Erzeugt Thread und gibt bei Erfolg 0 zurück, Out Parameter thread_id
Attributes 0 für default attributes, start_function muss die Adresse der auszuführenden Funktion übergeben werden, als Argument kann ein Struct auf dem Heap übergeben werden
Um Attribute zu setzen muss man ein pthread_attr_t erstellen und dieses übergeben, um dem Attribut Funktion zu übergeben müssen diverse Funktionen auf dem Attribut aufgerufen werden (z.B pthread_attr_setstacksize(&attr, 2)
void pthread_exit(void *exit_code)
Beendet Thread und gibt den exit_code zurück
int pthread_cancel(pthread_t thread_id)
Sendet Anforderung um Thread zu beenden aber überprüft nicht ob er geschlossen wurde
int pthread_detach(pthread_t thread_id)
Entfernt den von einem Thread verwendeten Speicher, falls der Thread noch läuft wird nichts unternommen
int pthread_join(pthread_t thread_id)
Wartet bis der Thread mit thread_id beendet wurde und ruft anschliessend pthread_detach auf
int pthread_key_create(pthread_key_t *key, void (*destructor)(void*))
Erzeugt Key im Out-Parameter Key
int pthread_key_delete(pthread_key_t key)
Entfernt den Key und die Werte aus allen Threads => Programm muss zusätzlich allozierter Speicher freigeben
int pthread_setspecific(pthread_key_t key, const void *value)
Schreibt den Wert in den Thread Local Storage
void * pthread_getspecific(pthread_key_t key)
Liest wert aus Thead Local Storage
int sem_init(sem_t *sem, int pshared, unsigned int value)
Initialisiert Semaphor mit einem Value, ist pshared = 0 kann er nur innerhalb eines Prozesses verwendet werden
int sem_wait(sem_t *sem) & int sem_post(sem_t *sem)
Implementieren Post & Wait, geben 0 zurück wenn ok sonst -1 und Fehlercode in errno
int sem_destroy(sem_t *sem)
Entfernt zusätzlicher Speicher den das OS mit sem assoziiert hat
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t * attr)
The pthread_mutex_init() function initializes a mutex with the specified attributes for use. The new mutex may be used immediately for serializing critical resources. If attr is specified as NULL, all attributes are set to the default mutex attributes for the newly created mutex.
int pthread_mutex_lock(pthread_mutex_t *mutex)
Lockt den Mutex
int pthread_mutex_unlock(pthread_mutex_t *mutex)
Gibt Mutex frei
Priority Inversion
Thread mit hoher Priorität muss auf Ressource warten die von Thread mit tiefer Priorität gehalten wird, Priorität von hohem Thread wird runtergesetzt
Priority Inheritance
Thread der eine Ressource hält bekommt die höchste Priorität aller Threads die auf die Ressource warten
int sigaction(int signal, struct sigaction *new, struct *sigaction old)
Signal ist die Nummer des Signal, definiert Signal Handler für signal wenn new != 0, gibt bestehenden Signal-Handeler zurück
stuct sigaction { void (*sa_handler)(int); sigset_t sa_mask; int sa_flags: };
sa_handler ist die Handler-Funktion, sa_mask gibt an welche Signale blockiert werden sollen, sa_flags verschiedene zusätzliche Eigenschaften
SIGFPE
Programmfehler (z.b 1/0)
SIGILL
Programmfehler ungültige Instruktion
SIGSEGV
Programmfehler ungültiger Speicherzugriff
SIGSYS
Programmfehler ungültiger Systemaufruf
SIGTERM
Prozess beenden (normal, höflich)
SIGINT
Prozess beenden (nachdrückliche Aufforderung)
SIGQUIT
Prozess beenden (nachdrücklich, als abnormale Terminierung gewertet)
SIGABRT
Prozess beenden (nachdrücklich, abnormal, bevorzugt von Prozess an sich selbst)
SIGKILL
Prozess beenden (kann nicht ignoriert oder überschrieben werden)
SIGTSTP
versetzt Prozess in Zustand stopped
SIGSTOP
versetzt Prozess in Zustand stopped aber kann nicht ignoriert werden