Межпроцессное взаимодействие в UNIX
.pdfСоздание процессов
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 |