|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2004
Città: Napoli
Messaggi: 342
|
[C] Funzione che cattura output
Esiste in C una funzione che cattura l'output di un comando Linux, come la funzione qx() di PerL?
__________________
Il futuro lo conoscerete quando sarà arrivato, prima di allora dimenticatelo. (Eschilo) |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Puoi usare delle pipe, per connettere stdin/stdout/stderr a descrittori del tuo programma.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2004
Città: Napoli
Messaggi: 342
|
Quote:
__________________
Il futuro lo conoscerete quando sarà arrivato, prima di allora dimenticatelo. (Eschilo) |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Attento a non usare la chiamata "system" in questo modo. Un pipe diventa bloccante quando il buffer di trasmissione si riempie (e riempirlo è facile, visto che contiene solo una o due pagine di memoria), è necessario quindi che chi legge lo "svuoti" continuamente. Ciò non avviene con la system, in quanto il chiamante (che dovrebbe leggere il pipe) blocca sulla wait in attesa che il child termini (e il child si ritroverà bloccato se riempie il buffer del pipe).
L'utilizzo corretto è tramite la fork.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:58.



















