Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C] funzione system

  1. #1

    funzione system

    Ciao a tutti,

    sto scrivendo un programmino in C da far girare su una macchina Linux, che ricevuti come parametri il nome di un file ed un numero intero x, scriva in tale file dopo x secondi la data e l’orario corrente.

    Il codice che ho scritto è:
    codice:
    #include<stdlib.h>
    #include<stdio.h>
    #include<unistd.h>
    #include<signal.h>
    #include<fcntl.h>
    #include<sys/stat.h>
    
    void MyHandler(int signumber);
    
    int main(int argc, char **argv)
    {
     int fd, delay_time;
     char nome_file[40];
     signal(SIGALRM,MyHandler);
     if(argc != 3)
     {
      printf("Errore: numero di parametri immessi errato.\n");
      printf("Esecuzione terminata.\n");
      exit(0);
     }
     sprintf(nome_file,"%s",argv[1]);
     delay_time = atoi(argv[2]);
     fd = open(nome_file, O_WRONLY|O_CREAT, S_IRWXU|S_IXGRP|S_IXOTH);
     alarm(delay_time);
     pause();
     system("date > nome_file");
     close(fd);
     return 0;
    }
    
    void MyHandler(int signumber)
    {
    }
    Come si può notare facendo girare il programma c’è un errore nell’uso della funzione system poiché la data viene si scritta, ma non in un file chiamato come il contenuto della variabile nome_file, ma chiamato invece proprio nome_file (come la variabile!!).

    Come posso risolvere questo problema? Grazie...

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Conoscendo un po' meglio il linguaggio C, ma non è questa la seziona adatta...

  3. #3

    Re: funzione system

    Originariamente inviato da FastMagister
    Ciao a tutti,

    sto scrivendo un programmino in C da far girare su una macchina Linux, che ricevuti come parametri il nome di un file ed un numero intero x, scriva in tale file dopo x secondi la data e l’orario corrente.

    Il codice che ho scritto è:
    codice:
    #include<stdlib.h>
    #include<stdio.h>
    #include<unistd.h>
    #include<signal.h>
    #include<fcntl.h>
    #include<sys/stat.h>
    
    void MyHandler(int signumber);
    
    int main(int argc, char **argv)
    {
     int fd, delay_time;
     char nome_file[40];
     signal(SIGALRM,MyHandler);
     if(argc != 3)
     {
      printf("Errore: numero di parametri immessi errato.\n");
      printf("Esecuzione terminata.\n");
      exit(0);
     }
     sprintf(nome_file,"%s",argv[1]);
     delay_time = atoi(argv[2]);
     fd = open(nome_file, O_WRONLY|O_CREAT, S_IRWXU|S_IXGRP|S_IXOTH);
     alarm(delay_time);
     pause();
     system("date > nome_file");
     close(fd);
     return 0;
    }
    
    void MyHandler(int signumber)
    {
    }
    Come si può notare facendo girare il programma c’è un errore nell’uso della funzione system poiché la data viene si scritta, ma non in un file chiamato come il contenuto della variabile nome_file, ma chiamato invece proprio nome_file (come la variabile!!).

    Come posso risolvere questo problema? Grazie...
    Ad esempio, cosi' (non testato):
    codice:
    char cmd[256]
    snprintf(cmd, 256, "date > %s", nome_file);
    system(cmd);
    PS: io qui userei sleep() anziche' pause + SIGALARM
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  4. #4

    Re: Re: funzione system

    [QUOTE]
    Ad esempio, cosi' (non testato):
    codice:
    char cmd[256]
    snprintf(cmd, 256, "date > %s", nome_file);
    system(cmd);
    [QUOTE]

    Compilando mi dice "incompatible types in assignment" sulla riga della snprintf

  5. #5
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    ma devi usare per forsa system()...
    non potresti usare fwrite(), oppure write()che fa parte della libreria del kernel(Unix...)???

    potrebbe essere + facile!
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

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.