|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jan 2014
Messaggi: 2
|
[C] Problema con EXEC su algoritmo con gestione dei segnali
Salve a tutti posto di seguito un codice scritto in C in cui riscontro un problema sostanzialmente nel passaggio degli argomenti di argv[] che in pratica sono i comandi che il figlio deve eseguire al segnale del padre.
Nella funzione "figlio" ho provato a fare qualche debug con i printf e il contenuto di argv lo riceve ma dalla funzione "figlio" alla funzione "eseguibile" il contenuto si perde e quindi l'execlp in output non dà nulla. Qualcuno cortesemente può aiutarmi a capire dove ho sbagliato? Grazie in antipico. Codice:
// #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <signal.h> void eseguibile(); void figlio(char *com, int pidf); char *com; void main(int argc, char *argv[]) { char *com; int ris; int i=1; int pidfiglio; int pidff; ris=fork(); pidff=ris; switch(ris) { case -1: printf("\n\nErrore nella fork riprovare in seguito\n\n"); break; case 0: pidfiglio=getpid(); figlio(argv[i], pidfiglio); break; default: printf("\n\nSono nel padre pid:%d invio il segnale al figlio...\n\n", getpid()); sleep(5); printf("\n\nVALORE PIDFIGLIO A CUI INVIARE IL PER SEGNALE: %d\n\n", pidff); kill(pidff, SIGUSR1); break; } } void figlio(char *com, int pidf) { printf("\n\nSono il figlio PID:%d IMPOSTO IL SEGNALE \n\n", pidf); signal(SIGUSR1, eseguibile); while(1); } void eseguibile() { printf("\n\nSono il figlio pronto ad eseguire..\n\n"); execlp(com,com,0,0); }
__________________
"Qualunque cosa tu possa fare, qualunque sogno tu possa sognare, comincia. L'audacia reca in se genialità, magia e forza. Comincia ora." Ultima modifica di fabrymus : 31-10-2015 alle 14:50. |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Jan 2014
Messaggi: 2
|
Potete chiudere la discussione perchè ho risolto, problema di variabili globali.
__________________
"Qualunque cosa tu possa fare, qualunque sogno tu possa sognare, comincia. L'audacia reca in se genialità, magia e forza. Comincia ora." |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:26.