Daniel Acevedo P1 #! /bin/bash find $1 -name *.class > /tmp/r$$ find $1 -name *.o >> /tmp/r$$ rm -f '`cat /tmp/r$$`' /* el problema persiste pues rm verá espacios que interpreta como otro archivo y no como un espacio dentro del nombre de un mismo archivo */ 18/25 P2 #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <signal.h> #include <unistd.h> #include <string.h> #define MAXLINE 4096 static void sig_int(int); int main(void) { char pid_t int buf[MAXLINE]; pid; status; /* our signal-catching function */ if (signal(SIGINT, sig_int) == SIG_ERR) printf("signal error"); printf("%% "); /* print prompt (printf requires %% to print %) */ while (fgets(buf, MAXLINE, stdin) != NULL) { buf[strlen(buf) - 1] = 0; /* replace newline with null */ if ( (pid = fork()) < 0) printf("fork error"); else if (pid == 0) { /* child */ execlp(buf, buf, (char *) 0); printf("couldn't execute: %s", buf); exit(127); } /* parent */ if ( (pid = waitpid(pid, &status, 0)) < 0) printf("waitpid error"); printf("%% "); } exit(0); } void sig_int(int signo) { sleep(2); printf("Llegó Control-C.\n%% "); exit(1); } /* Su programa no espera por Control-C. Si el comando termina, su programa termina si esperar por control-C */ 15/25 P3 No responde esta pregunta 0/25 P4 #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS 2 int var=0; int j; int aux; void *operatoria(void *threadid) { long tid; tid = (long)threadid; if(tid==0){ for(j=0;j<2000000;j++){var++;} } if(tid==1){ for(j=0;j<2000000;j++){var--;} } printf("Hola, soy la hebra Nº #%ld!\n", tid); printf("var= %d\n\n", var); pthread_exit(NULL); } int main (int argc, char *argv[]) { /*aux=atoi(argv[1]); if(argc==0) printf("debes ingresar un 0 o un 1"); if(aux==1)printf("ingresaste un 1"); if(aux==0)printf("ingresaste un 0"); */ pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; t<NUM_THREADS; t++){ printf("\nCreando la hebra Nº: %ld\n", t); rc = pthread_create(&threads[t], NULL, operatoria, (void *)t); if (rc){ printf("ERROR; return code from pthread_create() is %d\n", rc); exit(-1); } } // debe esperar por término de hebras printf("\nValor final de var: %ld\n", var); pthread_exit(NULL); } // usted no hace la versión con exclusión mutua. 20/25