Vai al contenuto

[Linea di comando IPHONE] Output con system() ?


Messaggi raccomandati

Ciao a tutti…

Ho la necessità di scrivere l'output testuale di un comando, su un file.

Ma non mi viene in mente niente :mhh:

Idee?

Grazie,

Luca

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

echo ciao > pippo.txt

scrive "ciao" nel file pippo.txt (nella dir in cui ti trovi)

"Chi ha giocato Del Duca-Samb non ha paura di niente" - Carlo Mazzone, da allenatore della Roma, prima di un derby contro la Lazio.

Link al commento
Condividi su altri siti

Però sto notando che con la funzione system() non mi scrive niente…

non credo sia un problema di permessi… :mhh:

Ho scoperto che sull'iphone non è possibile scrivere i bundle dell'applicazione, perciò bisogna ricorrere ad altri percorsi.

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

Il problema della scrittura nel bundle dell'applicazione credo sia docuto al fatto che le app per iPhone non sono delle semplici cartelle con in MacOSX, ma sono compresse in zip (non ricordo dove l'ho letto), quindi è naturale che non puoi scrivere all'interno di un file zip :ghghgh:.

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

Il problema della scrittura nel bundle dell'applicazione credo sia docuto al fatto che le app per iPhone non sono delle semplici cartelle con in MacOSX, ma sono compresse in zip (non ricordo dove l'ho letto), quindi è naturale che non puoi scrivere all'interno di un file zip :ghghgh:.

No sono cartelle. Ci sto gironzolando con Cyberduck :ghghgh:

È una scelta di Apple, probabilmente per questioni di sicurezza…ma poco importa.

Il mio problema è che mi serve avere un output di un comando da terminale, ma NSTask NON ESISTE, non è stato implementato in Foundation.

Quindi ricorro a system(UTF8 string); che funziona, ma purtroppo non so come prendere l'output testuale...

Quindi sto provando a scrivere da qualche parte il mio output…ma senza successo. Non so cosa inventarmi…anche volendo usare un pipe me ne faccio ben poco…

:lol:

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

Non ricordo dove avevo letto questa cosa delle app zippate, ma forse si riferiva solo a quelle comprate sull'AppStore?

Comunque per l'altro problema non puoi leggere il file dello stdout? Sempre che su iPhone esista.

Una volta avevo fatto una cosa simile con il Mac, eseguivo un comando con system() e leggevo l'output dal un NSFileHandle dello stdout, con l'iPhone è fattibile?

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

L'unico posto in cui puoi scrivere è la directory Document

/tua app/tuaapp.app

/tua app/Document

/tua app/Library

questa è la struttura delle applicazioni per iphone

Link al commento
Condividi su altri siti

Non ricordo dove avevo letto questa cosa delle app zippate, ma forse si riferiva solo a quelle comprate sull'AppStore?

Comunque per l'altro problema non puoi leggere il file dello stdout? Sempre che su iPhone esista.

Una volta avevo fatto una cosa simile con il Mac, eseguivo un comando con system() e leggevo l'output dal un NSFileHandle dello stdout, con l'iPhone è fattibile?

Puoi postare codice di esempio?

Grazie!

L'unico posto in cui puoi scrivere è la directory Document

/tua app/tuaapp.app

/tua app/Document

/tua app/Library

questa è la struttura delle applicazioni per iphone

Proprio in Documents sto provando a scrivere…

Ma non scrive niente... :ciao:

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

Devi cercare una cosa del genere :

/var/mobile/Applications/AA0BED9C-1092-4760-9F48-2CD0F58DBD21/Documents/

Attenzione che quella serie di caratteri tra Applications e Documents cambia da installazione ad installazione.

iMac Alu 20" C2D 2,0 Ghz RAM 3 Gb HD 250 Gb - PowerBook G4 12" - iPhone 3G 8Gb

LagMac Studio - iPhone and iPodTouch applications

Link al commento
Condividi su altri siti

Devi cercare una cosa del genere :

/var/mobile/Applications/AA0BED9C-1092-4760-9F48-2CD0F58DBD21/Documents/

Attenzione che quella serie di caratteri tra Applications e Documents cambia da installazione ad installazione.

Scusate, non ho specificato prima.

Accedo semplicemente alla cartella Documents, tramite il comodo NSBundle, dal quale ricavo, togliendo e aggiungendo, la path della cartella (la stringa identicativa dell'applicazione cambia ogni volta infatti).

Purtroppo non scrive il file :weep:

Fate una cosa del genere

NSString *stringa = @"echo \"Test\" > blabla/file.txt"; // blabla è la path corretta di documents

system([stringa UTF8String]);

è corretto, ma purtroppo non scrive il file.

Ho provato a settare chmod 777 a Documents, ma ho già i permessi per scrivere.

potete constatare personalmente purtroppo…

Cmq grazie per l'interessamento :ciao:

P.S. Provate a scrivere con una NSData, NSDictionary o quello che volete. In questo modo viene scritto tutto regolarmente, ma da terminale niente…

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

non voglio farmi i fatti tuoi... ma perchè devi scrivere da terminale?

potresti provare a mettere il risultato in una stringa e poi aprire regolarmente il file e inserire la stringa nel file

Link al commento
Condividi su altri siti

non voglio farmi i fatti tuoi... ma perchè devi scrivere da terminale?

potresti provare a mettere il risultato in una stringa e poi aprire regolarmente il file e inserire la stringa nel file

Ti spiego.

system() non da alcun output testuale; da solo un intero, 0 o 1, in caso di insuccesso o successo del comando.

Non restituendo alcun output testuale, l'unica alternativa che ho è quella di scrivere l'output su un file, quindi o con un pipe oppure con l'operatore > nel comando stesso.

Se Apple implementava in Foundation anche NSTask, allora tutto era molto più semplice.

Tu come faresti ad ottenere l'output di un comando da shell?

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

io proverei con un classico

fprintf(FILE *restrict stream, const char *restrict format, ...);

male che va di manda a cagare :fiorellino:

EDIT:

Ma non è che il problema è che non hai i permessi per eseguire il comando dentro system?

perchè sinceramente non credo sia un problema di permessi di file.

Link al commento
Condividi su altri siti

EDIT:

Ma non è che il problema è che non hai i permessi per eseguire il comando dentro system?

perchè sinceramente non credo sia un problema di permessi di file.

Non credo proprio.

Su Mac funziona alla perfezione…

Non capisco dove sbaglio…forse è un bug…

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...