Juan Donoso P1 #!/bin/sh ls $1 | grep `\.o$` > /tmp/o.txt ls $1

Anuncio
Juan Donoso
P1
#!/bin/sh
ls $1 | grep '\.o$' > /tmp/o.txt
ls $1 | grep '\.class$' > /tmp/class.txt
while read line
do
rm -f $1/$line /* Faltó poner “ “ a “$1/$line” */
done < /tmp/o.txt
while read line
do
rm -f $1/$line
/* Faltó poner “ “ a “$1/$line” */
done < /tmp/class.txt
rm -f /tmp/o.txt /tmp/class.txt
Puede funcionar pero no ingresa a sub-directorios.
18/28
P2
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
static void sig_c(int);
int main (void){
if (signal(SIGINT, sig_c) == SIG_ERR){
printf("can't catch SIGUSR1");
exit(-1);
}
if (signal(SIGUSR1, sig_c) == SIG_ERR){
printf("can't catch SIGUSR1");
exit(-1);
}
if (signal(SIGUSR2, sig_c) == SIG_ERR){
printf("can't catch SIGUSR1");
exit(-1);
}
for ( ; ; )
pause();
}
static void sig_c(int signo)
{
if(signo == SIGINT){
sleep(2);
printf("\nLlegó Control-C.\n");
exit(0);
}
return;
}
25/25
P3
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(void){
pid_t pid;
int status;
int pfd[2];
if (pipe(pfd) < 0) {
perror("pipe error");
exit(1);
}
if((pid = fork()) < 0){
perror("Error");
exit(-1);
}
if( pid == 0 ){
int junk;
dup2(0, pfd[0]); //entrada estandar a pipa Su programa no está inresando los valores a bc, éste los lee desde teclado!
close(pfd[1]);
execlp("bc","bc",(char *)0);
perror("exec error");
_exit(127);
}
char line[100];
while(1)
{
printf("Ingrese una expresión Aritmética:\n"); // Notar que este mensaje sale sólo una vez
read(0, line, 100);
write(pfd[1], line, 100);
waitpid(pid, &status, 0);
if(status==0){
printf("Cerrando Aplicación...\n");
break;
}
}
//dup2(0,pfd[1]);
close(pfd[0]);
//waitpid(pid, &status, 0);
close(pfd[1]);
//printf("\n%d\n",status);
exit(0);
}
20/25
P4
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
pthread_t ntid;
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
int i=0;
int control;
int mayor;
int menor;
void * incremento(void *arg)
{
int j;
mayor=-2000001;
for( j=0; j< 2000000; j++){
if(control)
pthread_mutex_lock( &mutex1 );
i++;
if(mayor < i)
mayor=i;
if(control)
pthread_mutex_unlock( &mutex1 );
}
return((void *)0);
}
void decremento(void)
{
int j;
menor=2000001;
for( j=0; j< 2000000; j++){
if(control)
pthread_mutex_lock( &mutex1 );
i--;
if(menor > i)
menor=i;
if(control)
pthread_mutex_unlock( &mutex1 );
}
}
int main (int argc, char *argv[]){
if(argc != 2){
printf("No ingreso el argumento\n");
exit(-1);
}
control = atoi(argv[1]);
int err = pthread_create( &ntid , NULL , incremento , NULL);
decremento();
if (err != 0){
perror("thread");
exit(-1);
}
pthread_join(ntid, NULL);
printf("El mayor número fue: %d\n",mayor);
printf("El menor número fue: %d\n",menor);
printf("La variable termino con el valor: %d\n",i);
exit(0);
}
25/25
Descargar