Pedro Durán P1 No entrega 0/25 P2 #include signal.h> #include

Anuncio
Pedro Durán
P1
No entrega
0/25
P2
#include <signal.h>
#include <unistd.h>
void trapper(int);
int main(int argc, char *argv[])
{
int i;
signal(SIGINT, trapper);
pause();
}
void trapper(int sig)
{
sleep(2);
printf("Lego control-C.\n");
exit(0);
}
/* Si llega una señal distinta a Control-C también termina. */
20/25
P3
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h> /* for write*/
#include <stdlib.h> /* for exit */
int lee;
char buffer[512];
main(){
if ( (pid = fork()) < 0) {
printf("fork error\n");
exit(-1);
}
else if(pid=0){
lee=read(0,buffer,512); // captura de la entrada estandar
system("echo -e buffer ");
}
}
5/25
P4
#include < s t dio.h >
#include < s t dlib.h > / * for exit */
#include < p t h rea d.h >
# define ITERACIONES 2000000
int valorMinimo,valormaximo;
int contador;
pthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER;
void * Exclusion(void *arg)
{
int i;
for (i = 0; i <ITERACIONES; i + +){
pthrea d_mutex_lock(&mylock);
contador+ +;
if(contador>valormaximo)valormaximo=contador;
pthrea d_mutex_unlock(&mylock);
}
}
void * sinExclusion(void *arg) // sí usa exclusión ¿? igual a la previa
{
int i;
for (i = 0; i <ITERACIONES; i + +){
pthrea d_mutex_lock(&mylock);
contador+ +;
if(contador>valormaximo)valormaximo=contador;
pthrea d_mutex_unlock(&mylock);
}
}
int main(int argc, char *argv[])
{
int err, i;
contador = 0;
pthread_t tid;
if(argc!=2){
printf("debe ingresar solo un argumento");
exit(-1);
}
if(atoi(argv[1])==0){
err = pthread_create(&tid, NULL, sinExclusion, NULL);
if (err != 0){
printf("can't create threa d \ n");
exit(0);
for (i = 0; i <ITERACIONES; i + +){
contador-- ;
if(contador<valorminimo)valorminimo=contador;
}
pthread_join(tid, NULL);
printf("El valor minimo alcanzado por contador es\n",valorminimo);
printf("El valor maximo alcanzado por contador es\n",valormaximo);
printf("El valor alcanzado por contador es\n",contador);
exit(0);
}
else if(atoi(argv[1])==1){
err = pthread_create(&tid, NULL, Exclusion, NULL);
if (err != 0){
printf("can't create threa d \ n");
exit(0);
for (i = 0; i <ITERACIONES; i + +){
pthread_mutex_lock(&mylock);
contador-- ;
if(contador<valorminimo)valorminimo=contador;
pthread_mutex_unlock(&mylock);
}
pthread_join(tid, NULL);
printf("El valor minimo alcanzado por contador es\n",valorminimo);
printf("El valor maximo alcanzado por contador es\n",valormaximo);
printf("El valor alcanzado por contador es\n",contador);
exit(0);
}
else {
printf("el argumento solo puede ser 1 ó 0");
exit(-1);
}
/*err = pthread_create(&tid, NULL, increment, NULL);
if (err != 0){
printf("can't create threa d \ n");
exit(0);
}
for (i = 0; i <ITERACIONES; i + +){
pthread_mutex_lock(&mylock);
contador-- ;
if(contador<valorminimo)valorminimo=contador;
pthread_mutex_unlock(&mylock);
}
pthread_join(tid, NULL);
printf("El valor minimo alcanzado por contador es\n",valorminimo);
printf("El valor maximo alcanzado por contador es\n",valormaximo);
printf("El valor alcanzado por contador es\n",contador);
exit(0);*/
}
22/25
Descargar