You are on page 1of 2

SIMLAB 1

Makefile
Crea un fitxer Makefile per compilar tots els programes, usant regles independents para cadascun.
Inclou una regla “clean” per eliminar tots els executables, fitxers objecte i/o fitxers temporals. Els
programes només s’han de compilar si i només si s’ha actualitzat algun dels fitxers de codi font.

Control de errors i funció Usage


Tots els programes han d’incloure un control dels arguments utilitzant la funció usage i han de
controlar els errors en TOTES les crides a sistema (a excepció del write per pantalla).

1. search.c
Implementa el codi "search.c" que accepta 2 paràmetres d'entrada seguint el següent format:

#> ./search num cadena_nums

El programa busca la primera aparició de “num” (podem assumir que és un nombre d’un únic dígit)
dins de la cadena de caràcters “cadena_nums”. En el cas que “cadena_nums” tingui un caràcter que
no és un dígit, el programa finalitzarà retornant el valor “-1”. Aquest valor també és el que retornarà
si no troba “num” dins de la cadena. En cas que l’execució sigui correcta (és a dir, “num” es pot
trobar dins de “cadena_nums” i aquest només té dígits) llavors mostrarà un missatge per pantalla
indicant el número que s’ha trobat, la posició dins “cadena_nums” en la que està i finalitza l’execució
retornant aquesta posició.

Un exemple d’execució seria: “#>./search 1 341256” retornaria “2”, ja que està en la tercera posició
de “cadena_nums”.

2. search_con.c
Implementa el codi “search_con.c” que accepta paràmetres d’entrada amb el següent format:

#> ./search_con num1 num2 num3 cadena_nums

el programa crearà, de manera concurrent, tants processos fill com “numX” tingui. En l’exemple
anterior, serien 3 processos fill. Cada procés fill mutarà per executar “./search” del “numX” que li
pertoqui dins “cadena_nums” (aquesta és única per tots els processos fill). El procés pare
monitoritzarà la finalització de cada fill, de tal manera que quan acabi, mostrarà un missatge dient:
el procés fill <PID> ha trobat “numX” en la posició Y

on <PID> és el PID del procés fill que ha finalitzat, “numX” el nombre que busca, i “Y” la posició
que ha retornat al finalitzar. En cas que hagi succeït algun dels casos d’error, el missatge seria:
el procés fill <PID> no ha pogut trobar “numX”

NOTA: en cas d’error, veuràs que quan “search” retorna “-1”, el procés pare obté el valor “255”.
SIMLAB 1

3. search_sec.c
Copia el codi de l’exercici anterior i renombra’l a “search_sec.c”. Fes els canvis que consideris
oportuns per a què ara l’esquema de creació i execució dels processos fill sigui seqüencial.

Què s’ha d’entregar


Un únic fitxer tar.gz amb el codi font i el Makefile. Per generar-lo ho podeu fer amb la següent línia
de comandes:

tar zcvf SIMLAB1.tar.gz *.c Makefile

You might also like