Добавил:
inrad
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ТВПиС контрольная работа / contr1 / contr1
.c#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <pthread.h>
#define MAXI 5
void * prtmess(void *id);
int main(){
pthread_t thread_id;
int id,id2;
pid_t pid;
id = 1;
if (0 == fork ())
{
id = 2;
if (0 == fork ())
{
id = 3;
}
}
if (id == 1)
if (0 == fork ())
{
id = 4;
if (0 == fork ())
{
id = 5;
if (0 == fork ())
{
id = 6;
}
}
}
if (id == 1)
if (0 == fork ())
{
id = 7;
}
id2 = 0;
switch (id) {
case 6: id2 = 8;break;
case 3: id2 = 9;break;
case 7: id2 = 10;
}
if (id2!=0){
if (pthread_create(&thread_id,NULL,&prtmess,&id2))
perror("pthread_create");
}
prtmess(&id);
wait(0);
wait(0);
wait(0);
return 0;
}
void * prtmess(void *id){
struct timeval c_time;
int i;
int id2 = *(int *)id;
for (i = 0; i<MAXI;i++){
gettimeofday(&c_time,NULL);
printf("%2d pid:%5d ppid:%5d :%6d\n",id2,getpid(),getppid(),c_time.tv_usec);
usleep(200*1000*id2);
}
}