Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    9

    [c] chiamata a comandi della shell

    Avrei la necessità di chiamare un comando della shell all'interno di un programma C. Mi servirebbe per settare una variabile d'ambiente da utilizzare come riferimento.

    In pratica vorrei richiamare dal programma c, quello che normalmente, nella shell, si scriverebbe così:

    mypc@linux-en2m:~/Documents>export test=10

    qualcuno ha idea di come si fà?


  2. #2
    In windows puoi effettuare la chiamata a sistema semplicemente così:

    system("comando che vuoi inviare");
    Ad. es: se volessi terminare explorer.exe potresti scrivere così:

    system("TASKKILL /IM explorer.exe");
    Questo sotto windows; Sotto linux penso che la chiamata a sistema la faccia comunque.

    Facci sapere :P

  3. #3
    Se devi impostare una variabile d'ambiente usa le syscall adeguate.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    9
    Intanto sono sotto linux.

    Ho provato a scrivere, come prova, questo codice:

    #include <stdlib.h>
    #include <unistd.h>

    main(){
    char *name="TEST";
    char *value="12";
    int i=0;
    setenv(name,value,i);
    printf("%s", getenv(name));
    }

    La printf l'ho inserita per verificare se veniva assegnato correttamente il valore alla variabile.

    Quando da terminale verifico la presenza della variabile, o con il comando export, o con il comando env, Non risulta presente!!

    Qualcuno ha qualche idea? sono io che sbaglio qualcosa?

  5. #5
    Le variabili di ambiente su Linux valgono solo per il processo corrente, e ne viene passata una copia ai processi figli quando questi vengono avviati tramite una delle exec (a meno di non usare la execve o la execle, nel qual caso le variabili d'ambiente passate possono essere differenti). Se vuoi modificare le variabili della shell devi modificarle tramite il comando apposito che la shell ti fornisce.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Ma hai letto bene il link che ti è stato passato?

    The setenv() function inserts or resets the environment variable name in
    the current environment list. If the variable name does not exist in the
    list, it is inserted with the given value. If the variable does exist,
    the argument overwrite is tested; if overwrite is zero, the variable is
    not reset, otherwise it is reset to the given value.
    ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.