OpenSCADAWiki:
Roman Savochenko
/
C Short All
/
part2
/part17
...
Home
|
Index
|
Changes
|
Comments
|
Users
|
Registration
|
Login
:
Password:
====2.17 Процессы.==== **atexit (BSD) <stdlib.h, cstdlib>** //int atexit(void (*function)(void));// Регистрирует функцию, вызываемую при обычном завершении программы/процесса. Регистрация происходит цепочкой что позволяет регистрировать несколько функций. **clone (LINUX) <sched.h>** //int clone(int (*fn) (void *arg), void *child_stack, int flags, void *arg);// Клонирует новую задачу на базе функции <fn> со стеком <child_stack> флагами <flags> и аргументами <arg>. **exec[c,l,e,p,v] (POSIX) <unistd.h>** //int execl( const char *path, const char *arg, ...);// //int execlp( const char *file, const char *arg, ...);// //int execle( const char *path, const char *arg , ..., char * const envp[]);// //int execv( const char *path, char *const argv[]);// //int execvp( const char *file, char *const argv[]);// //int execve(const char *filename, char *const argv[], char *const envp[]);// Заменяет выполняющуюся программу другой программой. Отличия функций: * p - Производить поиск программы в каталогах описанных в PATH; * v - Принимать список аргументов программы в виде массива строковых указателей оканчивающихся NULL-указателем; * l - Принимает список аргументов переменного размера; * e - Принимать в дополнительном аргументе массив переменных сред. **exit, _exit, _exit (POSIX) <stdlib.h, unistd.h>** //void exit(int status);// //void _exit(int status);// exit - обычное завершение работы программы/процесса. _exit - немедленное завершение работы программы/процесса. **fork (POSIX) <sys/types.h; unistd.h>** //int fork();// Порождает дочерний процесс. Родительскому процессу возвращается ID дочернего процесса ,а дочернему 0. **getpid, getppid (POSIX) <sys/types.h, unistd.h>** //pid_t getpid(void);// //pid_t getppid(void);// getpid - возвращает идентификатор текущего процесса (PID). getppid - возвращает идентификатор родительского процесса(PPID). **nice (BSD) <unistd.h>** //int nice(int inc);// Устанавливает фактор уступчивости вызывающего процесса в величину <inc> (-39..39). Чем фактор больше, тем ниже приоритет процесса. **sched_setaffinity, sched_getaffinity (Linux) <sched.h>** //int sched_setaffinity(pid_t pid, unsigned int len, unsigned long *mask);// //int sched_getaffinity(pid_t pid, unsigned int len, unsigned long *mask);// Установить/получить привязку процесса к конкретному процессору многопроцессорной системы. **sched_setparam, sched_getparam (POSIX) <sched.h>** //int sched_setparam(pid_t pid, const struct sched_param *p);// //int sched_getparam(pid_t pid, struct sched_param *p);// Установка/получение параметров диспетчеризации процесса. **sched_setscheduler, sched_getscheduler (POSIX) <sched.h>** //int sched_setscheduler(pid_t pid, int policy, const struct sched_param *p);// //int sched_getscheduler(pid_t pid);// Установка/получение политики диспетчеризации процесса. **sched_get_priority_max, sched_get_priority_min (POSIX) <sched.h>** //int sched_get_priority_max(int policy);// //int sched_get_priority_min(int policy);// Получение максимального/минимального значения приоритета реального времени. **sched_rr_get_interval (POSIX) <sched.h>** //int sched_rr_get_interval(pid_t pid, struct timespec *tp);// Получить продолжительность кванта времени для SCHED_RR планирования. **sched_yield (POSIX) <sched.h>** //int sched_yield(void);// Отдать процессорное время другим процессам. **setsid (POSIX) <unistd.h>** //pid_t setsid(void);// Вызывающий процесс становится ведущим в группе, ведущим процессом нового сеанса и не имеет контролирующего терминала. **setpgid, getpgid, setpgrp, getpgrp (POSIX, BSD) <unistd.h>** //int setpgid(pid_t pid, pid_t pgid);// //pid_t getpgid(pid_t pid);// //int setpgrp(void);// //pid_t getpgrp(void);// Устанавливает/получает идентификатор группы процессов **system (ANSI,POSIX) <stdlib.h>** //int system (const char * string);// Выполняет, указанные в string, системные команды. **wait, waitpid, wait3, wait4 (POSIX) <sys/types.h, sys/wait.h, sys/resource.h>** //pid_t wait(int *status);// //pid_t waitpid(pid_t pid, int *status, int options);// //pid_t wait3(int *status, int options, struct rusage *rusage);// //pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);// Приостанавливают выполнение процесса до тех пор, пока дочерний процесс не завершится, или до появления сигнала, который либо завершает текущий процесс, либо требует вызвать функцию-обработчик. Если дочерний процесс к моменту вызова функции уже завершился (так называемый "зомби" ("zombie")), то функция немедленно возвращается. Параметр pid: * < -1 -- нужно ждать любого дочернего процесса, идентификатор группы процессов которого равен абсолютному значению <pid>; * -1 -- ожидание любого дочернего процесса; * 0 -- означает ожидание любого дочернего процесса, идентификатор группы процессов которого равен идентификатору текущего процесса; * > 0 -- ожидание дочернего процесса, чей идентификатор равен pid; В <rusage> записывается структура struct rusage, заданная в <sys/resource.h>, заполненная соответствующей информацией.
Please type the word you read in the image: