3 * Az albbi probram egy processfarmot hoz letre. A fo program vezerli a
4 * dolgozokat es osszegzi a munkat.
7 * 1. osszes munka (sec)
9 * 3. dolgozok szama (>0)
10 * 4. elso dolgozo kapacitasa
11 * 5. masodik dolgozo ... (opcionalis)
18 #include <sys/types.h>
22 int X
=23; // osszes munka (sec)
23 int D
=8; // szakasznyi munka (sec)
25 //int n=3; // dolgozok szama
36 kill(getppid(), SIGUSR1
);
43 printf("pid=%d received SIGALRM\n", getpid());
46 kill(PIDS
[i
], SIGUSR1
);
47 expected
-= 6; // FIXME - a dolgozohoz kapcsolodo kapacitas (Wx)
59 printf("parent: SIGUSR1 received\n");
60 WORK_DONE
+= W1
; // FIXME - a dolgozohoz kapcsolodo kapacitas (Wx)
63 pid_t
cw() //create worker
67 if ((child
= fork()) == 0) {
69 if (signal(SIGUSR1
, work
) == SIG_ERR
) {
70 printf("child: SIGUSR1 failed\n");
79 printf("\n\nElso parameter: osszes munka\n\
80 Masodik parameter: egysegnyi munka\n\
84 int main(int argc
, char* argv
[])
88 if (argc
< 5) { // NOTE: main always got program name as the first param
89 printf("Legalabb 4 parametert meg kell adnia!\n");
94 if (atoi(argv
[3]) != argc
-4) {
95 printf("A dolgozok szamaval egyezo szamu kapacitast kell megadnia!\n");
96 printf("Dolgozok: %s Kapacitasok: %i", argv
[3], argc
-4);
107 printf("PID: %d\n", PIDS
[i
]);
111 if (signal(SIGALRM
, ticker
) == SIG_ERR
) {
112 printf("parent: SIGALRM failed\n");
114 if (signal(SIGUSR1
, worker_done
) == SIG_ERR
) {
115 printf("parent: SIGUSR1 failed\n");
118 while(alarm(D
) != 0) {
119 printf("KESZ: %i", WORK_DONE
);