Пример кода родительского процесса
Пример кода родительского процесса
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
#include <sys/neutrino.h>
#include <sys/netmgr.h>
#include <spawn.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
#include <locale.h>
int main(int argc, char **argv) {
int nid; // Дескриптор удаленного узла
int PChanid; // Идентификатор созданного канала
int CChanid; // Идентификатор канала, созданного
// порожденным процессом на удаленном узле
int coid; // Идентификатор связи с порожденным
// процессом по созданному им каналу
int rcvid; // Идентификатор отправителя полученного
// сообщения int
ErrCode; // Код ошибки
char *args[] = {
"/net/904-3/home/ZZZ/BIN/TestChild",
"pid данного процесса",
"идентификатор канала",
NULL
};
char BufName[100], Bufpid[12],
Bufchanid[12], RecBuffer[100];
char SendBuf[100] = "привет, сынок!";
pid_t procid, childid;
struct inheritance Inhproc;
setlocale(LC_CTYPE, "C-TRADITIONAL");
if ((PChanid = ChannelCreate(0)) == -1)
printf("Родитель: странно, но не удалось "
"создать канал ");
else printf("Родитель: канал PChanid = %i создан ", PChanid);
strcpy(BufName, "Bed-Test");
// Передаем порожденному процессу свой pid...
args[1] = itoa(procid = getpid(), Bufpid, 10);
// ... и дескриптор канала
args[2] = itoa(PChanid, Bufchanid, 10);
InhProc flags = SPAWN_SETND | SPAWN_NOZOMBIE;
if ((nid = netmgr_strtond(BufName, NULL)) == -1) {
printf("Родитель, отсутствует %s ", BufName);
return(-1);
} else printf("Родитель: найден узел %s, его nid = %i ", BufName, nid);
InhProc nd = nid;
sprintf(BufName, "/net/Bed-Test/");
chroot(BufName);
errno = 0;
childid = spawn(args[0], 0, NULL, &InhProc, args, NULL);
ErrCode = errno;
sprintf(BufName, "/net/904-3/");
chroot(BufName);
if (childid- = -1)
printf("Родитель: не удалось породить процесс,"
" errno = %i ", ErrCode);
else
printf("Родитель, мой id = %i,"
"порожденный процесс имеет id = %i ", procid, childid);
if ((rcvid = MsgReceive(PChanid, RecBuffer, 100, NULL)) == -1)
printf("Родитель: от дитятки не удалось"
" получить сообщение ");
else {
printf("Родитель: от дитятки получено"
" сообщение:"%s" ", RecBuffer);
CChanid = atoi(RecBuffer);
strcpy(RecBuffer, "спасибо, сынок");
if (MsgReply(rcvid, EOK, RecBuffer, 100) == -1)
printf("Родитель: почему-то не удалось "
"ответить сыночку: Ау, где ты? ");
}
if ((coid =
ConnectAttach(nid, childid, CChanid, _NTO_SIDE_CHANNEL, 0)) == -1) {
printf("Родитель: странно, но не смог установить"
" канал связи с ребенком:"
"nid = %i childid = %i CChanid = %i ", nid, childid, CChanid);
return(-1);
}
printf("Родитель: установил связь coid = %i с"
" ребенком ", coid);
errno = 0;
if (MsgSend(coid, SendBuf, 100, SendBuf, 100) == -1)
printf("Родитель: на MsgSend получил errno = %i ", errno);
else
printf("Родитель, получен отклик на MsgSend()"
", "%s" ", SendBuf);
printf("Родитель: позвольте откланяться ");
ChannelDestroy(Pchanid);
ConnectDetach(CChanid);
return(0);
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Пример: защита процесса и его потоков
Пример: защита процесса и его потоков В документации по функции OpenProcess представлена подробная градация прав доступа, соответствующих самым разнообразным функциям, выполнение которых требует применения дескриптора процесса.Так, значение PROCESS_TERMINATE параметра доступа
Пример кода порожденного процесса
Пример кода порожденного процесса #include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <string.h>#include <process.h>#include <sys/netmgr.h>#include <sys/neutrino.h>#include <errno.h>#include <locale.h>int main(int argc, char **argv) { int nid; // Дескриптор текущего узла int CChanid; // Идентификатор созданного канала int
Идентификатор родительского процесса Parent Process ID (PPID)
Идентификатор родительского процесса Parent Process ID (PPID) Идентификатор процесса, породившего данный
Глава 12 Настройка родительского контроля
Глава 12 Настройка родительского контроля 12.1. Ограничения по времени12.2. Игры12.3. Разрешение и блокировка конкретных программВпервые с понятием родительского контроля пользователи столкнулись в операционной системе Windows Vista. Задумка достаточно интересная: вы можете
7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО)
7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО) Организация устанавливает и сопровождает набор основных средств производственного процесса, как показано на рис. 4.1. К
8.15. Вызов виртуальной функции родительского класса
8.15. Вызов виртуальной функции родительского класса ПроблемаТребуется вызвать функцию родительского класса, но она переопределена в производном классе, так что обычный синтаксис p->method() не дает нужного результата.РешениеУкажите полное имя вызываемого метода, включая
5.4.2. Взаимодействие родительского и дочернего процессов
5.4.2. Взаимодействие родительского и дочернего процессов Функция pipe() создает два файловых дескриптора, которые действительны только в текущем процессе и его потомках. Эти дескрипторы нельзя передать постороннему процессу. Дочерний процесс получает копии дескрипторов
Пример 6-2. Использование символа ! для логической инверсии кода возврата
Пример 6-2. Использование символа ! для логической инверсии кода возврата true # встроенная команда "true".echo "код возврата команды "true" = $?" # 0! trueecho "код возврата команды "! true" = $?" # 1# Обратите внимание: символ "!" от команды необходимо отделять пробелом.# !true вызовет сообщение
Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя
Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя #!/bin/bash# timeout.sh# Автор: Stephane Chazelas,# дополнен автором документа.INTERVAL=5 # предел времени ожиданияtimedout_read() { timeout=$1 varname=$2 old_tty_settings=`stty -g` stty -icanon min 0 time ${timeout}0 eval read $varname # или просто read $varname
5.5. ПРИМЕР РАЗРАБОТКИ ОПИСАНИЯ ПРОЦЕССА "КИПЯЧЕНИЕ ВОДЫ В ЧАЙНИКЕ"
5.5. ПРИМЕР РАЗРАБОТКИ ОПИСАНИЯ ПРОЦЕССА "КИПЯЧЕНИЕ ВОДЫ В ЧАЙНИКЕ" Ниже показано пошаговое выполнение проектной процедуры на примере разработки описания процесса "Кипячение воды в чайнике". Дополните данное описание наглядными рисунками на листе 1 самостоятельно.Лист 2.
Практическая работа 60. Настройка родительского контроля
Практическая работа 60. Настройка родительского контроля Задание. Настроить ограничения при использовании компьютера детьми и проверить их работу. ВНИМАНИЕ Это задание можно выполнить только в версиях Windows Vista Home Basic, Home Premium и Ultimate и только при использовании учетной