elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 [86] 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ... 161
851  Programación / Programación C/C++ / Re: Ayuda con fork() y señales SIGUSR1 en: 3 Mayo 2017, 23:32 pm
Prueba con esto. Aviso que uso Linux Mint Mate 18.1 y no lleva xterm por defecto (y ahora me da un poco de pereza instalarlo), así que no sé que tal ira.

Código
  1. #define _XOPEN_SOURCE
  2.  
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. #include <sys/wait.h>
  6. #include <signal.h>
  7. #include <unistd.h>
  8. #include <time.h>
  9. #include <fcntl.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12.  
  13. void sig_handler(int signo)
  14. {
  15.    time_t rawtime;
  16.  
  17.    time(&rawtime);
  18.    printf("PADRE.SIG_HANDLER: Hora actual es: %s", ctime (&rawtime));
  19. }
  20.  
  21. void hilo_hijo() {
  22.    pid_t ppid;
  23.    pid_t pid;
  24.    int terminal;
  25.    char argumentos[255] = "-S";
  26.  
  27.    terminal = open("dev/ptmx", O_RDWR | O_NOCTTY);
  28.    grantpt(terminal);
  29.    unlockpt(terminal);
  30.    dup2(0, terminal);
  31.    dup2(1, terminal);
  32.    dup2(2, terminal);
  33.    strcat(argumentos, ptsname(terminal));
  34.    pid = fork();
  35.    if(pid == 0) {
  36.        execl("xterm", argumentos);
  37.        exit(0);
  38.    }
  39.  
  40.    ppid = getppid();
  41.    printf("HIJO: Mi padre PID=%d.\n", ppid);
  42.    printf("HIJO: Voy a enviar un mensaje a mi padre...\n");
  43.    kill(ppid, SIGUSR1);
  44.    printf("HIJO: Hora de terminar.\n");
  45. }
  46.  
  47. void hilo_padre(pid_t pid_hijo) {
  48.    printf("PADRE: Programa hora ejecutandose. Mi hijo PID=%d.\n", pid_hijo);
  49. printf("PADRE: Listo para recibir la señal SIGUSR1.\n");
  50. signal(SIGUSR1, sig_handler);
  51. wait(NULL);
  52.    printf("PADRE: Hora de terminar.\n");
  53. }
  54.  
  55. int main() {
  56. pid_t pid;
  57.  
  58. pid = fork();
  59.  
  60.    switch(pid) {
  61.        case -1:
  62.            printf("ERROR: No se pudo generar el hilo\n");
  63.            break;
  64.  
  65.        case 0:
  66.            hilo_hijo();
  67.            break;
  68.  
  69.        default:
  70.            hilo_padre(pid);
  71.            break;
  72.    }
  73.    fflush(stdout);
  74. }
852  Programación / Programación C/C++ / Re: crear una lista de nombre con edad implementando en ella un menu. en: 3 Mayo 2017, 20:57 pm
Tienes unos cuantos errores mínimos para pulir y tal, pero el que no te deja hacer funcionar la aplicación como debería es en main:

Código:
int main(){

        while(1){// Funcion que forma un ciclo hasta que el usuario ordene romperlo.
 
    Lista miLista;

A cada iteración del bucle la lista se genera de nuevo, por tanto siempre estará vacía. Declara primero la lista y después entra en el bucle.

853  Programación / Programación C/C++ / Re: ayuda este codigo no se ejecuta en: 2 Mayo 2017, 01:48 am
Y la última llave te sobra.
854  Programación / Programación C/C++ / Re: me podrian decir porque no compila este codigo? en: 2 Mayo 2017, 01:39 am
A parte de unos problemas con punteros. sel, dentro de la función presentación no está bien manejado y aunque se tratara bien el valor es indeterminado porque no se ha inicializado.
855  Programación / Programación C/C++ / Re: Cadena de caracteres en C en: 2 Mayo 2017, 01:33 am
De seguro que has pensado en la solución pero la has descartado por demasiado complicada. Algo así cómo:
Citar
Tengo que capturar una frase desde el teclado y debo mirar si todo son números. Si lo son tengo que ver si esos números están entre el máximo y mínimo que me da el usuario y si no dar un error.

El enunciado de la idea te da la solución.
1. Capturas la frase
2. Te mueves carácter por carácter para ver si es un dígito (ya has usado isdigit). Si todo son dígitos continuas con el punto 3, sino marcas error y sales.
3. Transformas la cadena a un número. Con sscanf (las dos eses no son un error) lo conseguirás.
4. Compruebas que están entre los límites.
856  Programación / Programación C/C++ / Re: Cadena de caracteres en C en: 1 Mayo 2017, 17:19 pm
La comprobación que haces para comprobar si la respuesta es mayor de 50 caracteres no es necesaria pues fgets nunca te dejará introducir más caracteres que los que les marcas.

Código:
if((0<=p<=10 && isdigit(p))
esto está mal pues los números se guardan en ASCII no literales, por tanto 0<=p<=10, además de ser una construcción lógica mal hecha en C no comprobará lo que buscas. Deberías usar funciones que comprobaran cadenas, como strcmp.
857  Programación / Programación C/C++ / Re: Un programa de preguntas y respuestas formuladas por ti, ayuda en: 30 Abril 2017, 22:38 pm
El contenido de dos cadenas por array de char no se comparan con el == sino con la función strcmp
858  Programación / Programación C/C++ / Re: base de datos en: 30 Abril 2017, 21:20 pm
Ufff, titánico. Después de media hora intentando hacerlo funcionar me he rendido.

Además de lo que te han dicho pon al principio del fuete, debajo de definiciones de tipos y variables globales, los prototipos de las funciones. Una función, para que pueda ser usada, debe conocerse su firma.

También hay una función que comparte el nombre con una estructura.
859  Programación / Programación C/C++ / Re: base de datos en: 30 Abril 2017, 14:36 pm
Este es el código completo del otro post?
860  Programación / Programación C/C++ / Re: Problema con script C en: 30 Abril 2017, 13:11 pm
Te decía del código actualizado con los cambios que te hemos marcado, o almenos el intento.
Sobre el código de la solución anteriormente te he pasado un código que sirve para toda la frase y con laa premisas para que funcione. Si quieres terminar el tuyo de ayudo, pero no con el código completo.
Páginas: 1 ... 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 [86] 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines