|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2006
Messaggi: 81
|
[C] Lanciare piu comandi [BASH] (+ parametri) con exec..
Ciao a tutti, sto provando a lanciare con un programma C una sequenza di comandi BASH utilizzando exec(..) e la funzione strtok() ma ho un problema
di segmentation fault apparentemente irrisolvibile (gia' provato e debuggare in tutti i modi a me conosciuti, ma nulla.. ). Provo a postarvi il codice, magari salta fuori che sto facendo cio che voglio fare nella maniera piu cretina possibile.. Codice:
int runall(char *arg, ...) { /*Id dei processi*/ int pid; va_list lista_argomenti; /*Stringa in cui salvo il conmando da eseguire */ char *comando = NULL; /*Array di stringhe in cui salvo i vari parametri relativi al comando */ char *parametri[10]; va_start(lista_argomenti, arg); /*Stampo la stringa arg e non ci sono problemi*/ printf("%s \n",arg); /*Estraggo il primo token dalla stringa arg, su questo comando il programma mi restituisce segmentation fault. Sebbene sia gia riuscito a fare questa operazione su una qualsiasi stringa, e nel comando precedente mi sono accertato che arg sia una stringa a tutti gli effetti...*/ comando = strtok( arg, " " ); while ( comando != 0 ) { /*Salvo con un ciclo i parametri nell array "parametri"*/ /*CODICE ANCORA MANCANTE...*/ /*Eseguo comando*/ pid = fork(); if (pid == 0) { execlp(comando++, *parametri); } comando = va_arg(lista_argomenti, char *); } va_end(lista_argomenti); sleep(1); } int main(int argc, char **argv) { runall("ls -l","uname -a","ps -aux",(char *) 0); exit(0); } Ultima modifica di vv1984 : 17-01-2008 alle 10:15. Motivo: non avevo messo il codice nei tag code.. e non ero mai andato a capo... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:09.