|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Aug 2012
Messaggi: 3
|
direzionare input output ad altro processo
salve a tutti
![]() ho un dubbio e non so proprio se si possa realizzare! ![]() Chiamiamo 2 processi A e B A: manda un comando a B (tramite fifo) B: è un processo in background riceve il comando e lo esegue. Dato che B è in background vorrei redirezionare l'input e l'output ad A (che lo deve perciò gestire). Parte di questo lo posso realizzare tramite una system, gli operatori "< >" e 2 fifo, per convenenzia le chiamo fifoinput e fifooutput. Ora cerco di esporre il problema che si trova in A. Il processo A dopo aver inviato il comando si trova in attesa di input e/o output (sulle fifoinput e fifooutput) finchè non viene terminato il comando da B (A può essere anche forkato in modo di dividersi i compiti tra input e output). Di preciso per stampare a video l'output A effettua una read sulla fifooutput e successivamente una printf. Il problema è che non sono in grado di sapere la quantità di byte da leggere e neppure il tipo di dato... se fosse solo un tipo di dato si potrebbe risolvere facilmente ma non tutti i comandi accettano ad esempio caratteri. si propone più o meno lo stesso problema con la write, ma, non sono in grado di sapere il tipo e la quatità di dati da leggere da tastiera. Si può realizzare in qualche modo??? ![]() Ciao e grazie in anticipo!!! P.S. sistema operativo: "ubuntu 10.04" Ultima modifica di ascovale : 04-08-2012 alle 14:05. Motivo: non avevo inserito l'SO |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
versione quick & dirty: scrivi prima un intero con la dimensione dell'input.
versione quick & dirty 2: mandi a raffica ed in fondo concateni un segnale prestabilito di fine flusso (tipo un EOF) versione 3: mandi una quantità prestabilita di dati a prescindere da quanti in realtà sono, che ne so 50 byte, e continui fino a che non raggiungi la fine, quello che avanza lo riempi con valori nulli
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Aug 2012
Messaggi: 3
|
prima di tutto grazie della risposta
![]() Ora non so se sbaglio o non so come si fà! dato che il comando è eseguito dal processo B con una system() non posso gestire io direttamente le write. Perciò non posso fare una write precedente ad un flusso in uscita in output... quick and dirty (1 per intenderci) non si può utilizzare. la quick and dirty 2 ha un'altro problema per stampare a video come faccio a sapere che tipo di dato o di fronte? la versione 3 propone entrambi i problemi ... hihi speriamo che stia sparando cavolate |
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Aug 2012
Messaggi: 3
|
continuo a cercare su internet ma nulla da fare!!! Nessuno può aiutarmi???
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:49.