Лінії видимого контуру

Породження процесі, як подано в лістінгу 6, можливе за допомогою фу­нкцій, які викликаються із функції mane ().

// Лістінг 6. Основна гілка програми, з якої викликається функція,

// що породжує процес

int main (int argc, char *argv [ ]) {

// . . .

Rt = func1 (X, Y, Z );

// . . . }

// Визначення функції.

int func1 (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); }

В лістінгу 6. функція func1 викликається з трьома аргументами. Ці аргу­менти передаються породженому процесу.

Процеси також можуть породжуватися із методів, які належать об’єктам. Як подано в лістінгу 7, об’єкти можна оголосити в довільному процесі.

// Лістінг 7. Оголошення об’єкту в процесі

 

// . . .

my_object MyObject;

// . . .

// Оголошення та визначення класу.

class my_object {

public:

// . . .

int spawnProcess (int X);

// . . . };

int my_object :: spawnProcess (int X) {

// . . .

// . . . posix_spawn () або system ()

// . . . }

Як подано в лістінгу 7, об’єкт може створювати довільну кількість про­цесів з довільного методу.