Looking for SISTEMAS OPERATIVOS test answers and solutions? Browse our comprehensive collection of verified answers for SISTEMAS OPERATIVOS at moodle.uam.es.
Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!
Dado el siguiente código, ¿cuándo se ejecuta la sentencia fprintf(stdout, "Fin del programa\n");
?
void manejador_SIGALRM(int sig) {
printf("\nEstos son los numeros que me ha dado tiempo a contar\n");
}
int main(void) {
struct sigaction act;
long int i;
sigemptyset(&(act.sa_mask));
act.sa_flags = 0;
act.sa_handler = manejador_SIGALRM;
if (sigaction(SIGALRM, &act, NULL) < 0) {
perror("sigaction");
exit(EXIT_FAILURE);
}
if (alarm(10)) {
fprintf(stderr, "Existe una alarma previa establecida\n");
}
sleep(2);
sigsuspend(&(act.sa_mask));
fprintf(stdout, "Fin del programa\n");
exit(EXIT_SUCCESS);
}
¿Cuál es la principal ventaja de frente a sigsuspend
pause
?
Dado el siguiente código C, ¿se bloque alguna señal durante la ejecución de la función handler
?
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
/* Handler function for the signal SIGINT. */
void handler(int sig) {
printf("Signal number %d received\n", sig);
fflush(stdout);
}
int main(void) {
struct sigaction act;
act.sa_handler = handler;
sigemptyset(&(act.sa_mask));
act.sa_flags = 0;
if (sigaction(SIGINT, &act, NULL) < 0) {
perror("sigaction");
exit(EXIT_FAILURE);
}
while (1) {
printf("Waiting Ctrl+C (PID = %d)\n", getpid());
sleep(9999);
}
}
Si se desea dejar pasar solo 1 proceso en una zona crítica, ¿cómo debería ser la iniciaización del semáforo?
Dado el siguiente código C, ¿qué sucede si se le envía al proceso la señal SIGUSR1
?
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(void) {
sigset_t set, oset;
/* Mask to block signals SIGUSR1 and SIGUSR2. */
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
sigaddset(&set, SIGUSR2);
/* Blocking of signals SIGUSR1 and SIGUSR2 in the process. */
if (sigprocmask(SIG_BLOCK, &set, &oset) < 0) {
perror("sigprocmask");
exit(EXIT_FAILURE);
}
printf("Waiting signals (PID = %d)\n", getpid());
printf("SIGUSR1 and SIGUSR2 are blocked\n");
pause();
printf("End of program\n");
exit(EXIT_SUCCESS);
}
Cuando se ejecuta una llamada a sem_open
:
Se desea ejecutar un programa ya existente y limitar su tiempo de ejecución a una hora. Se conoce que el programa no gestiona la señal , de modo que se pretende usar la función para que el programa finalice. ¿Qué secuencia de llamadas al sistema (en el orden especificado) se deberá usar?SIGALRM
alarm
Supón que tienes un proceso en el que se define una alarma utilizando alarm()
y luego se quiere añadir una llamada a sleep()
. ¿Cuál de las siguientes afirmaciones es correcta?
Una de las señales más utilizadas para interrumpir un proceso es . ¿Cómo se puede enviar esta señal a un proceso que se está ejecutando por terminal?SIGINT
Get Unlimited Answers To Exam Questions - Install Crowdly Extension Now!