lab4 2013

background image

Fork1.

#include

<stdio.h>

#include

<stdlib.h>

#include

<unistd.h>

#include

<process.h>

int

main

int

argc,

char

*argv[]) {

(

printf

(

"Fork.\n Uruchomienie: fork1 k1 k2\n"

);

printf

(

"k1 - liczba kroków procesu macierzystego\n"

);

printf

(

"k2 - liczba kroków procesu potomnego"

);

int

pid = 0;

int

i = 0;

int

j = 0;

int

k1 = 0;

int

k2 = 0;

k1

=

atoi

(argv[1]);

k2

=

atoi

(argv[2]);

if

( ( pid =

fork

()) == 0 )

{

printf

(

" Proces potomny PID: %d \n"

,

getpid

());

for

( i=1; i < k2; i++ )

{

printf

(

"Potomny - krok %d, j= %d\n"

, i,j);

sleep

(1);

}

exit

(0);

}

else

{

printf

(

"Proces macierzysty PID: %d \n"

,

getpid

());

for

(j=1;j<k1;j++)

{

printf

(

"Macierzyst - krok %d, 1= %d\n"

, j,i);

sleep

(1);

}

}

printf

(

"Koniec"

);

return

0;

}


Fork2

#include

<stdio.h>

#include

<stdlib.h>

#include

<unistd.h>

#include

<process.h>

int

main

int

argc,

char

*argv[]) {

(

printf

(

"Fork2.\n Uruchomienie: fork1 k1 k2\n"

);

printf

(

"k1 - liczba kroków procesu macierzystego\n"

);

printf

(

"k2 - liczba kroków procesu potomnego"

);

int

pid = 0;

int

i = 0;

background image

int

j = 0;

int

k1 = 0;

int

k2 = 0;

int

status = 0;

k1

=

atoi

(argv[1]);

k2

=

atoi

(argv[2]);

if

( ( pid =

fork

()) == 0 )

{

printf

(

" Proces potomny PID: %d \n"

,

getpid

());

for

( i=1; i < k2; i++ )

{

printf

(

"Potomny - krok %d, j= %d\n"

, i,j);

sleep

(1);

}

exit

(k2);

}

else

{

printf

(

"Proces macierzysty PID: %d \n"

,

getpid

());

for

(j=1;j<k1;j++)

{

printf

(

"Macierzyst - krok %d, 1= %d\n"

, j,i);

sleep

(1);

}

}

pid

=

wait

(&status);

printf

(

"Proces %d zakończony, status %d\n"

, pid,

WEXITSTATUS(status));

printf

(

"Koniec"

);

return

0;

}


My_prog.

#include

<stdlib.h>

#include

<stdio.h>

int

main(

int

argc,

char

*argv[]) {

int

i = 0;

printf

(

"Liczba argumentow: %d\n"

, argc);

for

( i=0; i < argc; i++)

{

printf

(

"argv[%d]=%s\n"

, i, argv[i]);

}

printf

(

"Koniec\n"

);

return

0;

}


Execl

#include

<stdlib.h>

#include

<stdio.h>

#include

<process.h>

#include

<unistd.h>

#include

<sys/wait.h>

int

main(

int

argc,

char

*argv[]) {

background image

int

pid = 0;

int

i =0;

int

status = 0;

if

( (pid=

fork

())==0 )

{

execl

(

"my_prog"

,

"my_prog"

,

"par1"

,

"par2"

, NULL );

perror

(

"Blad funkcji exec"

);

}

else

{

for

(i=1;i<10;i++)

{

printf

(

"Macierzysty - krok %d \n"

, i);

sleep

(1);

}

}

pid

=

wait

(&status);

printf

(

"Proces %d zakonczony, status %d\n"

, pid,

WEXITSTATUS(status));

printf

(

"Koniec\n"

);

return

EXIT_SUCCESS;

}


Spawn

#include

<stdlib.h>

#include

<stdio.h>

#include

<process.h>

#include

<unistd.h>

#include

<sys/wait.h>

int

main(

int

argc,

char

*argv[]) {

int

pid = 0;

int

i =0;

int

res = 0;

int

status = 0;

char

buf[10];

for

(i=0;i<3;i++)

{

res

=

spawnl

(P_NOWAIT,

"my_prog"

,

"my_prog"

,

itoa

(i,buf,10),NULL);

if

( res<0)

{

perror

(

"SPAWN"

);

exit

(1);

}

}

for

(i=1;i<10;i++)

{

printf

(

"Macierzysty - krok %d\n"

,i);

sleep

(1);

}

while

((pid=

wait

(&status)) != -1 )

{

printf

(

"Proces %d zakonczony, status %d\n"

, pid,

WEXITSTATUS(status));

}

printf

(

"Koniec\n"

);

return

EXIT_SUCCESS;

}

background image





Wyszukiwarka

Podobne podstrony:
SPD2 lab4 2013 2014z
[4]tabelka, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki, labo
[4]opracowanie, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki,
[4]konspekt, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki, lab
[4]tabelka, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki, labo
[4]opracowanie, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki,
wykłady NA TRD (7) 2013 F cz`
Pr UE Zródła prawa (IV 2013)
W WO 2013 technologia
Lab4
TEORIE 6 2013 R
Wyk ECiUL#1 2013
Leczenie wrzodziejacego zapalenia jelit, wyklad 2013
TEORIE 1 2013 IIR
Wyk ECiUL#9S 2013
Estrogeny 2013

więcej podobnych podstron