Domanda

In nix molte applicazioni a riga di comando * che accettano i nomi di file come argomenti accettano tubi anche. Esempio:

anApplication file.txt

Funziona anche con

anApplication | anotherApplication arguments

E il risultato del "anotherApplication" viene reindirizzato a "impostazione Applicazione" come fosse un file

Ho imparato che l'equivalente di Windows per questo è un "named pipe". Mi chiedo se l'applicazione a riga di comando deve essere consapevole di named pipe per capirlo, o se qualsiasi applicazione a riga di comando che accetta un file come argomento avrebbe lavorato con una named pipe, invece.

È stato utile?

Soluzione

Hai presente abbastanza indietro. Giusto per essere precisi:

anApplication file.txt

Questo viene eseguito anApplication con la file.txt nome come primo argomento della riga di comando.

anApplication | anotherApplication arguments

Questo viene eseguito anApplication senza argomenti della riga di comando. Out standard è collegata alla standard di anotherApplication che è gestito con arguments come argomenti della riga di comando. Questo è esattamente lo stesso su Windows come lo è sulle versioni di Unix. Named pipe sono una caratteristica del tutto diverso sistema operativo.

Una named pipe è una voce della rubrica che si presenta come un file, ma agisce come un flusso di dati che è possibile allegare output e input.

Altri suggerimenti

Un named pipe su Windows è una cosa molto diverso da quello che si sta parlando. Una named pipe è in realtà uno strumento per aiutare a costruire applicazioni server su Windows, ed è più o meno equivalente a una "presa di dominio Unix".

Nella tua situazione, se anApplication lavora in questa situazione dipende da come l'applicazione reagisce quando viene eseguita senza un nome di file nella riga di comando. (Sto parlando della disposizione nella vostra descrizione, la linea di comando è indietro come sottolineato da un'altra risposta.) Se l'applicazione legge da stdin quando avviato senza una riga di comando, allora questo tipo di accordo tubo shell funzionerà. Se invece, l'applicazione stampa un messaggio di aiuto ed esce quando lanciato senza un nome di file, quindi questo tubo shell non funzionerà.

Per quanto ne sappia funziona lo stesso sotto Windows come in UNIX. Suppongo che alcune funzioni API più avanzate console Win32 potrebbero aggirare questo, ma dovrete leggere la documentazione per questo.

Si noti che questa è la sintassi di cmd.exe.

Questo tipo di reindirizzamento pipe dovrebbe funzionare con qualsiasi programma, in modo per rispondere alla tua domanda specifica, il programma non ha bisogno di codice speciale se si tratta di un'applicazione console standard.

C'è un avvertimento -. Se il programma sta ottenendo in ingresso attraverso le speciali forme di monitoraggio della tastiera di API runtime, quindi il reindirizzamento non funziona

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top