Sunteți pe pagina 1din 2

STC _PI_Prez1_28oct2020_Ora 14

1.Se considera urmatorul scenariu:Pe Desktop avem un folder Student, accesam acest folder si
deschidem terminalul de comanda.
a.Cum procedam pentru deschiderea terminalului? (0.5p)

Dupa ce am accesat folderul mergem sus la „tools” si acolo avem „Open terminal”.

b.Mai jos avem un program ex1.c care creeaza un proces fiu ce executa programul numit ex2.c
Procesul parinte asteapta terminarea fiului si afiseaza pid-ul procesului fiu si starea cu care s-a
terminat acesta (in zecimal si hexazecimal). (3p)
Completati spatiile lipsa din program
/* [ex1.c] */
#include <stdio.h>
#include <sys/types.h> else
#include <sys/wait.h>
int main() …exec(“ex2”,0);/*Aici este
{ executat ex2.c*/
int pid, stare; printf("Parinte: dupa fork()\n");
printf("Parinte: inainte de printf("\tId proces fiu=………;
fork()\n"); Terminat cu valoarea %d=%x\n",
if ((pid=fork()!=0) pid., stare, stare );
wait(&stare); }
c.Scrieti comenziile pentru compilarea si executia lui ex1.c. (0.75p)

>./ex1.c

d. Scrieți comanda pentru rulare în fundal a lui ex1.c (0.75p)

./ex1 &
e.Mai jos avem programul ex2.c unde se afisează pid-ul procesului și proprietarul procesului (3p)
/* [ex2.c] */
#include <stdio.h> printf("Fiul: %d se termina\n", pid);
#include <sys/types.h> printf("\n\nProprietarul procesului: UID=%d,
#include <sys/wait.h> GID=%d\n", getuit(), getegid());
int main() { int pid; .......................................// terminare normală;
printf("Fiul: incepe executia \n");
pid=getpid();

f. Dorim ca procesul determinat de ex2.c sa nu se termine normal, ci să intre într-o buclă


infinită. Specificați ce modificări trebuie aduse programului.(1p)
>./ex2 &
//si oprim programul cu „ps”

Modificarile aduse programului:


for( ; ; )

S-ar putea să vă placă și