Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261

    execl() in C sotto linux

    allora ho creato un file eseguibile e l'ho chiamato nuovo ,ecco il testo:

    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/wait.h>

    int main(int m)
    {

    printf("ciao io sono exec %d , %d , %d \n",getpid(),getppid(),m);


    }

    dopo di che eseguo una execl cosi:

    execl("/home/nello/nuovo","nuovo","4",0);

    e mi stampa :

    ciao io sono exec 6689 , 6688 , 2

    voi penserete vabbè sara il codice ascii di "4" invece no!!mi stampa sempre 2 anche se metto "s"

    perchè?!

  2. #2
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    AHhhhhhhhhhhhhhhhhhhHHHHHHHHhhhhhhhhhhhhhhhhhhhhhh hhhhhhhhhhhh

    Scusa la reazione, ecco la spiegazione:

    Il main può ricevere tre parametri

    codice:
    int main (int argc, char * argv[], char * envp []){
         return 0;
    }
    argc: # di parametri passati sulla riga di comando al programma, incluso il nome del programma
    es:
    codice:
    shell>>ciao
    argc = 1
    codice:
    shell>>ciao parametro
    argc = 2
    argv: è l'array di stringhe che contiene i parametri passati da riga di comando
    codice:
    shell>>ciao
    argv[0] = "ciao"
    codice:
    shell>>ciao parametro
    argv[0]="ciao" argv[1]="parametro"
    envp: è l'array delle variabili d'ambiente

    casualmente hai dichiarato il parametro del main come intero, così stampi il numero di elementi all'interno di argv che contiene "nuovo" e "4".

    Ciao!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ibykos
    Il main può ricevere tre parametri

    codice:
    int main (int argc, char * argv[], char * envp []){
         return 0;
    }
    A dire il vero, il terzo parametro non è "standard" e portabile quindi, se non per casi eccezionali (e specifici per i sistemi Linux), sconsigliato.

    All'interno del programma puoi sempre usare la funzione getenv() per leggere una variabile di ambiente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    grazie ho capito!!pero ora mi serve un altra cosa !!

    dato che argv[1] e una stringa infatti se faccio printf("%s",argv[1]); mela stampa,mi chiedevo se esiste una funzione che mi converte una stringa numero in intero

    esempio

    "45" che è una stringa deve farlo diventare 45 a numero!!!

  5. #5
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    la funzione che cerchi è atoi

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    scusami ancora !!metre il contrario cioè da intero a stringa...nn l'ho trovato nella pagina del link

  7. #7
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    l'opposto lo fa la itoa
    ciao!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da ibykos
    l'opposto lo fa la itoa
    Non l'avrei mai detto ...

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    261
    sicuto che itoa fa parte delle librerie standard di C perchè per atoi tutto ok ma per itoa no ...ho provato con il gcc del linux ma nn funziona

  10. #10
    Originariamente inviato da aspire1982
    sicuto che itoa fa parte delle librerie standard di C perchè per atoi tutto ok ma per itoa no ...ho provato con il gcc del linux ma nn funziona
    Difatti non ne fa parte, ma come direbbe andbin "è facile farsene una propria versione ".

    In realta basta usare sscanf:

    codice:
    sscanf(stringa, "%d", &intero);

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 © 2025 vBulletin Solutions, Inc. All rights reserved.