bin/bash find $1 -name *.class > /tmp/r$$ find $1

Anuncio
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
Descargar