Вход:  Пароль:  
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

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[]);
Заменяет выполняющуюся программу другой программой. Отличия функций:


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_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:

В <rusage> записывается структура struct rusage, заданная в <sys/resource.h>, заполненная соответствующей информацией.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]