Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Межпроцессное взаимодействие в UNIX

.pdf
Скачиваний:
6
Добавлен:
27.03.2015
Размер:
9.63 Mб
Скачать

Создание процессов

IP 1

2

3fork()

4if(pid=0)

5printf(“Child”)

6printf(“Main”)

среда, 14 декабря 11 г.

105

Создание процессов

1

2

IP

3 fork()

 

4if(pid=0)

5printf(“Child”)

6printf(“Main”)

среда, 14 декабря 11 г.

106

Создание процессов

1

2

IP

3 fork()

 

4if(pid=0)

5printf(“Child”)

6printf(“Main”)

1

2

IP

3 fork()

 

4if(pid=0)

5printf(“Child”)

6printf(“Main”)

среда, 14 декабря 11 г.

107

Создание процессов

1

2

3 fork()

IP

4 if(pid=0)

 

5printf(“Child”)

6printf(“Main”)

1

2

3 fork()

IP

4 if(pid=0)

 

5printf(“Child”)

6printf(“Main”)

среда, 14 декабря 11 г.

108

Создание процессов

1

2

3fork()

4if(pid=0)

5printf(“Child”)

IP

6 printf(“Main”)

 

1

2

3fork()

4if(pid=0)

IP

5 printf(“Child”)

 

6 printf(“Main”)

среда, 14 декабря 11 г.

109

Создание процессов

#include <unistd.h> #include <sys/types.h> #include <stdio.h> main()

{

int pid; pid=fork(); if (pid == 0)

execlp ("ls","ls","/etc",0); else

printf ("Main process");

}

среда, 14 декабря 11 г.

110

Создание процессов

#include <unistd.h> #include <sys/types.h> #include <stdio.h> main()

{

int pid; pid=fork(); if (pid == 0)

execlp ("ls","ls","/etc",0); else

printf ("Main process");

}

среда, 14 декабря 11 г.

110

Семафоры

среда, 14 декабря 11 г.

111

Семафоры

Main process:

Child process:

while(1)

while(1)

{

{

*a=1;

*a=2;

printf(“%d\n”,*a);

printf(“%d\n”,*a);

}

}

среда, 14 декабря 11 г.

112

Семафоры

Main process: sem_t sem; sem_init(&sem, 0, 1);

Main process:

Child process:

while(1)

while(1)

{

{

sem_wait(&sem);

sem_wait(&sem);

*a=1;

*a=2;

printf(“%d\n”,*a);

printf(“%d\n”,*a);

sem_post(&sem);

sem_post(&sem);

}

}

среда, 14 декабря 11 г.

113