Add very old versions (for history).
[opsoft_archive.git] / silentbob / silentbob-1.4 / gclib / doc / API / dexec.txt
blobaa0809091f5b8da9ff2d807fa46e3ae10f603fe4
1 /*
2  * (c) Oleg Puchinin 2006
3  * graycardinalster@gmail.com
4  *
5  */
7 UTF8
9                 "Исполнитель".
10 "Исполнитель" - система выполнения процессов, с поддержкой "стандартных" действий.
11 "Исполнителю" подается цепочка команд которые применяются как для дочернего так и для
12 родительского процесса.
14                 Функции.
15         Djob_init (struct __djob_t * ctx)
16 Инициализировать контекст для будущего процесса. Память под контекст должна быть
17 предварительно выделена.
19         dexec_rflags (int flags) /  dexec_wflags (int flags)
20 Установить дополнительные флаги для открытия файлов (на чтение / запись). При нулевом
21 аргументе возвращаются текущие флаги.
23         Dexec_op (struct __dexec_t *buf, int count, struct __djob_t *ctx)
24 Выполнить последовательно ряд команд из buf количеством count. Контекст процесса
25 ctx соответственно модифицируется.
26         
27         Dexec (int ops, struct __dexec_t *other_buf, int count, char *cmd, struct __djob_t *ctx)
28 Выполнить при помощи "sh -c" команду cmd, предварительно подготовив процесс. Последовательность
29 команд подготовки процесса может задаваться при помощи флагов ops и непосредственно списка команд 
30 other_buf количеством count. Контекст ctx соответственно модифицируется.
31         
33                 Команды.
34         DEXEC_OFILE / DEXEC_IFILE / DEXEC_EFILE
35 Перенаправить ввод/вывод/ошибки в/из файл(а). Первый аргумент команды - имя файла.
36 Команды не доступны в сокращенной (флаговой) форме.
38         DEXEC_INULL / DEXEC_ONULL / DEXEC_ENULL
39 Заменить ввод/вывод/ошибки на /dev/null
41         DEXEC_EXEC 
42 Выполнить команду. В данный момент используется ("sh -c"). Может использоваться в конце
43 всех команд или не использоваться вообще. Используется только в Dexec_op, но не Dexec.
44         
45         DEXEC_IPIPE / DEXEC_IPIPE / DEXEC_EPIPE
46 Сделать "трубу" вместо stdin /stdout /stderr. Родительский процесс получает доступ к этим
47 потокам через структуру-описание (см. ниже).
49         DEXEC_OTMP / DEXEC_ETMP
50 Открыть временный файл для потока вывода / ошибок.
51         
52 Структура-описание нового дочернего процесса.
53 struct __djob_t
55         __pid_t pid;                    // идентификационный номер процесса.
56         int exit_status;                // Статус завершения.
57         char status_ready;              // Процесс завершился.
58         char * user_data;               // Пользовательская информация.
59         int stdin;                      // дескриптор ввода процесса.
60         int stdout;                     // дескриптор вывода процесса.
61         int stderr;                     // дескриптор ошибок процесса.
62         int pipe_in[2];                 // для внутренних нужд.
63         int pipe_out[2];
64         int pipe_err[2];
65         char * shared_mem;              // память, которая разделяется 
66                                         // между родительским и дочерим процессами.
67         int shm_size;                   // размер разделяемой памяти.
68         char child;                     // дочерний процесс ?
69         char *otmp_name;                // имена временных файлов вывода
70         char *etmp_name;                // и ошибок (если были назначены)
73 struct __dexec_t {
74         int cmd;
75         long param;