Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367

    [C++ Linux] Scrivere un file nella home directory

    Giusto una domanda veloce.

    Io ho scritto:
    codice:
    ofstream file("~/.exprex.conf");
    file << "ciao" << endl;
    file.close();
    Perchè non scrive niente?
    Che modo c'è per scrivere nella home directory?
    I've got a bike. You can ride it if you like.

  2. #2

    Re: [C++ Linux] Scrivere un file nella home directory

    Originariamente inviato da edriv
    codice:
    ofstream file("~/.exprex.conf");
    file << "ciao" << endl;
    file.close();
    Perchè non scrive niente?
    Che modo c'è per scrivere nella home directory?
    Permesso negato suppongo. Il punto e` che (se ben ricordo) '~' e` una variabile che viene espansa dalla shell, quindi in questo caso il programma ha scritto (o ha provato a farlo ma il sistema gli ha negato l'accesso) un file di nome "~/.exprex.conf" nella directory corrente.
    Siccome poi '/' e` separatore di PATH e non puo` essere parte di un nome di file, il risultato netto e` che il programma ha provato a scrivere il file ".exprex.conf" nella sottodirectory "~" della directory corrente.
    E dato che dubito che quella directory esista, il risultato finale dovrebbe essere stato un "no such file or directory" o simile. Ci ho preso?
    "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".

  3. #3
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    Beh... è molto interessante come ipotesi e credo proprio che abbia ragione (ma non ho ancora provato).

    Ho cercato su google, ma stranamente non ho trovato nessun modo di partire dalla home...
    Poi provo a lavorare con system()... ma è possibile mettere l'output di un comando su una variabile?
    Un file temporaneo mi sembra esagerato...
    I've got a bike. You can ride it if you like.

  4. #4
    Originariamente inviato da edriv
    Ho cercato su google, ma stranamente non ho trovato nessun modo di partire dalla home...
    Si tratta in pratica di:
    1) recuperare la directory HOME dell'utente
    2) concatenare il percorso recuperato con il nome del file da creare
    3) usare normalmente il PATH cosi` costruito

    per il punto 2 si tratta, senza andare troppo per il sottile, di fare un po` di concatenazione di stringhe;
    il punto 1 si puo` risolvere con getenv() leggendo la variabile d'ambiente HOME, oppure si puo` recuperare il valore da /etc/passwd (o eventualmente chi per lui) usando getpwuid() + getuid()/geteuid()
    "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".

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.