Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Katerina Dobreva

#1
Programación C/C++ / Enviar señales
4 Diciembre 2016, 22:45 PM
Quiero enviar una señal del hijo 1 al hijo 2 y que cuando la reciba salte a la manejadora, después que el hijo 2 envíe una señal al hijo 1 y salte a la manejadora, pero cuando pasen 5 segundos se maten los procesos.

Consigo que se maten los procesos cuando pasan los 5 segundos, pero no que se envíen las señales SIGUSR1 antes. ¿Alguien podría ayudarme?

Código (cpp) [Seleccionar]
int main(int argc, char **argv) {
struct sigaction action;
sigset_t new_mask, oldmask;
int exitcode;

action.sa_flags = 0;
action.sa_handler = funcion;

sigaction(SIGTERM, &action, NULL);
sigemptyset(&new_mask);
sigaddset(&new_mask, SIGTERM);
       sigaddset(&new_mask, SIGUSR1);

hijo1 = fork();
switch(hijo1) {
case 0:
               kill(hijo2, SIGUSR1);
sigprocmask(SIG_BLOCK, &new_mask, &oldmask);
sigsuspend(&new_mask);
}

hijo2 = fork();
switch(hijo2) {
case 0:
               kill(hijo1, SIGUSR1);
sigprocmask(SIG_BLOCK, &new_mask, &oldmask);
sigsuspend(&new_mask);
}

signal(SIGALRM, tiempo);
alarm(5);
wait(&exitcode);
wait(&exitcode);
}



Mod: Los códigos deben ir en etiquetas GeSHi
#2
Programación C/C++ / Matar dos procesos hijos en C
2 Diciembre 2016, 20:16 PM
Hola, tengo que hacer un programa en el que creo dos procesos hijos. Cuando pasen 5 segundos, hay que matar a los dos procesos hijos en orden, el segundo debe esperar a que muera el primero. No consigo que mueran los procesos. Alguien podría echarme una mano. Gracias.



void tiempo(int sig)
{
   kill(hijo1, SIGTERM);
   kill(hijo2, SIGTERM);
}

void funcion()
{
   printf("Se ha matado un proceso");
}

int main(int argc, char **argv)
{
   struct sigaction action;
   sigset_t new_mask;

   act.sa_flags = 0;
   act.sa_handler = &funcion;
   sigaction(SIGTERM, &action, NULL);
   sigemptyset(new_mask);
   sigaddset(&new_mask, SIGTERM);

   hijo1 = fork();
   switch(hijo1)
   {
      case 0:
         sigsuspend(&new_mask);
   }
   hijo2 = fork();
   switch(hijo2)
   {
      case 0:
         sigsuspend(&new_mask);
   }
   signal(SIGALRM, tiempo);
   alarm(5);
}
#3
Programación General / Ayuda con SCILAB
13 Octubre 2015, 22:46 PM
Tengo que hacer este ejercicio:
Representar la siguiente función ya definida en el dominio de la frecuencia (se trata de la integral de Fourier de un pulso rectangular), en el rango de frecuencias de -4pi a 4pi rad/s .

Realizar la representación para valores de V = 1 y 5, y para valores de τ = 1 y 3. Observar cómo cambia el espectro en frecuencia en cada caso. Nota: No es necesario utilizar la función espectro puesto que ya se trata de una integral de Fourier.
Este es mi código, pero no me funciona. ¿Alguien sabe por qué? Gracias.
w = -4*%pi:4*%pi
V1 = 1
V2 = 5
t1 = 1
t2 = 3
F1 = V1 * t1 * sin(w * t1 / 2) / (w * t1 / 2)
F2 = V2 * t2 * sin(w * t2 / 2) / (w * t2 / 2)
plot(w, F1, "r")
plot(w, F2, "b")


Mod: Tema corregido, la Imagen era muy grande, los códigos deben ir en etiquetas de código y este tema no es una "duda general" sino sobre programación
#4
Hola, tengo que hacer un programa en el que el usuario introduzca los elementos de un vector en orden, es decir, salvo el primero, todo número introducido debe ser mayor que el anterior. Previamente el programa pedirá cuántos números se van a introducir (máximo 100).

#include<stdio.h>
#include<stdlib.h>

int main ()
{
int v[100], tam, i;

printf("¿Cuantos numeros quiere introducir?\n\n");
scanf("%d", &tam);

if(tam<=100 && tam>0)
{

printf("Introduzca los numeros en orden: ");


scanf("%d", &v[0]);

for(i=1;i<tam;i++)
{
do
{
scanf("%d", &v);
}
while(v[i-1]<v);
}

}
system("pause");
return 0;
}
#5
Programación C/C++ / Bucle controlado por bandera
2 Noviembre 2014, 14:58 PM
Tengo que hacer un bucle controlado por bandera que muestre los números introducidos por teclado en orden creciente. No pide un nuevo número si tecleas uno que no esté ordenado. ¿Cómo puedo corregirlo? Gracias de antemano.

#include<stdio.h>
#include<stdlib.h>

int main ()
{
int a, k;

printf("\n\nEscribe un numero en orden creciente:\n\n");
k=a;
do
{
scanf("%d", &a);
}
while (a>k);

system ("pause");
return 0;
}
#6
Programación C/C++ / Los números de Armstrong
5 Octubre 2014, 15:27 PM
Hola, acabo de empezar a estudiar ingeniería informática y ando un poco perdida. Nos han mandado un ejercicio en el que tenemos que diseñar el análisis y algoritmo que muestre por pantalla los números de Armstrong, comprendidos desde el 1. ¿Alguien podría decirme cómo hacerlo?

Nota: Un número es de Armstrong si la suma de los dígitos que lo componen al cubo es igual al número. Por ejemplo el 153, ya que 13 + 53 + 33 = 1 + 125 + 27 = 153.