- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/wait.h>
void sighndlr_1(int signo) { //obrabot4ik dlya 1go processa
printf("I'm child process #1. I've got SIGINT! :) So, I won't do anything...\n"); //prosto vyvod na ekran soobscheniya o polu4enii signala
}
void sighndlr_2(int signo) { //dlhya 2go
printf("I'm child process #2. I've got SIGINT :)\n");
}
int main(int argc, char **argv) {
pid_t pid1,pid2,pid3,pid4; //4 do4ernih processa
static struct sigaction act1,act2,act3; //3 struktury dlya 3h processov
act1.sa_handler = sighndlr_1; //ustanovka obrabot4ika dlya 1 struktory
act2.sa_handler = sighndlr_2; //dlya 2i
act3.sa_handler = SIG_IGN; //ignoriruem signal v 3 strukture
switch(pid1 = fork()) { //sozdaem 1 do4erniy process
case -1: //vihodim pri oshibke sozdaniya
printf("Error fork\n");
exit(1);
break;
case 0:
printf("Child process #1 started (pid = %d)\n", getpid()); //soobshenie ob uspeshnom sozdanii i vyvod pid
sigaction(SIGINT,&act1,NULL); //ustanovka struktury obrabot4ika dlya SIGINT
for(;;) pause(); //beskone4nyi cikl
break;
default:
switch(pid2 = fork()) { //sozdaem 2 process
case -1:
printf("Error fork\n");
exit(1);
break;
case 0:
printf("Child process #2 started (pid = %d)\n", getpid());
sigaction(SIGINT,&act2,NULL); //dlya SIGINT
sigaction(SIGQUIT,&act3,NULL); //ignorim SIGQUIT
for(;;) pause();
break;
default:
switch(pid3 = fork()) { //3 process
case -1:
printf("Error fork\n");
exit(1);
break;
case 0:
printf("Child process #3 started (pid = %d)\n", getpid());
sigaction(SIGINT,&act3,NULL); //ignorim SIGINT
for(;;) pause();
break;
default:
switch(pid4 = fork()) { //4 process
case -1:
printf("Error fork\n");
exit(1);
break;
case 0:
printf("Child process #4 started (pid = %d)\n", getpid());
setsid(); //menyaem identifikator seansa dlya processa
printf("Process #4 changed sid\n");
for(;;) pause();
break;
default:
printf("Finishing parent process... (pid = %d)\n", getpid());
exit(0); //zavershaetsya roditelsky process
break;
}
break;
}
break;
}
break;
}
}
Лаба по курсу операционных систем. Нужно было создать 4 дочерних процесса, и для каждого процесса создать свои обработчики для сигнала SIGINT или SIGQUIT. Полученный говнокод полон повторяющихся конструкций, и слишком сильно запутан операторами switch-case.
bugmenot 30.04.2011 18:13 # +1
быдлотранслит детектед
absolut 30.04.2011 18:32 # −1
guest 30.04.2011 18:38 # +3
"создаём один дочерний процесс"
bugmenot 30.04.2011 18:40 # −2
или KOI-8 не скомпилируется? :-D
absolut 30.04.2011 18:44 # −1
bugmenot 30.04.2011 20:31 # −1
absolut 30.04.2011 20:48 # −1
istem 30.04.2011 21:01 # −2
absolut 30.04.2011 21:22 # −1
Boten 30.04.2011 21:06 # +1
bugmenot 30.04.2011 21:31 # +3
guest 01.05.2011 13:43 # −5
bugmenot 01.05.2011 14:24 # +1
guest 01.05.2011 14:26 # −4
ой мне вас жаль, ухожу поплакать...
bugmenot 01.05.2011 14:49 # 0
ты уныл, кушнирка
guest 01.05.2011 14:55 # −4
вы думаете, вы ещё поправитесь?
AliceGoth 02.05.2011 21:11 # 0
istem 30.04.2011 18:41 # −1
absolut 30.04.2011 18:52 # −1
istem 30.04.2011 19:05 # 0
absolut 30.04.2011 19:08 # +1
istem 30.04.2011 19:10 # 0
а это ноутбук Попова? (попобук?)
guest 30.04.2011 20:13 # 0
guest8 04.10.2020 20:44 # −999
KOMAPuK 04.10.2020 21:22 # 0
guest8 04.10.2020 21:23 # −999
KOMAPuK 04.10.2020 21:28 # 0
Он до 2010-го или 2011-го года хранил только HTML. Все картинки, CSS, JS терялись. Современные сайты без CSS и без картинок в нём выглядели как говно.
Но потом «Вебархив» обновил сервера и теперь сохраняет любой контент. Из него теперь можно качать экзешники, видосики и прочую питушню.
absolut 30.04.2011 18:31 # 0
Boten 30.04.2011 21:08 # +2
Boten 30.04.2011 21:09 # 0
Lure Of Chaos 30.04.2011 22:11 # +5
никогда такого чуда не видел ))
ctm 03.05.2011 06:25 # 0
break;
тоже неплохо
guest 30.04.2011 22:54 # +5
Помогите, вокруг какаято хуйня творится. Что мне делать?
absolut 01.05.2011 08:28 # +2
eth0 01.05.2011 11:49 # +1
guest 15.05.2011 23:50 # 0