Линии видимого контура
Порождение процессов, как показано в листинге 3.7, возможно с помощью функций, вызываемых из функции main ().
// Листинг 3.7. Стержневая ветвь программы, из которой // вызывается функция, порождающая процесс
int main(int argc, char *argv[]) {
Rt = funcl(X, Y, Z); //.. .
}
// Определение функции.
int funcl(char *M, char *N, char *V) {
//.. .
char *const args[] = {«TaskX»',M,N,V,NULL};
Pid = fork();
if(Pid == 0) {
exec(«TaskX»,args);
}
if(Pid > 0) {
//.. .
}
wait(&stat);
}
В листинге 3.7 функция funcl () вызывается с тремя аргументами. Эти аргументы передаются порожденному процессу.
Процессы также могут порождаться из методов, принадлежащих объектам. Как показано в листинге 3.8, объекты можно объявить в любом процессе.
// Лист инг 3.8. Объявление объекта в процессе //-••
my_pbject MyObject; //-••
// Объявление и определение класса.
class my_object {
public: //...
int spawnProcess(int X); //...
};
int my_object::spawnProcess(int X) {
//.. .
// posix__spawn() или system() //.. .
}
Как показано в листинге 3.8, объект может создавать любое количество процессов из любого метода.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОК