Unix-putki
Unix-putki (myös anonyymi putki tai komentoriviputki) on komentoriviohjelmille suunniteltu prosessien välinen kommunikaatiotapa välittää yhden ohjelman palaute toisen ohjelman syötteeksi. Putkitus on esimerkki Unix-käyttöjärjestelmän työkaluohjelmien filosofiasta ja vaikutti sen muodostumiseen.[1] Ominaisuuden lisäämistä käyttöjärjestelmään ajoi Douglas McIlroy vuonna 1973.[1] Ken Thompson toteutti ominaisuuden yhdessä illassa.[2]
Vastaava toiminnallisuus on toteutettu myös lukuisissa muissa käyttöjärjestelmissä.
![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Pipeline.svg/250px-Pipeline.svg.png)
Komentorivikäsittely
[muokkaa | muokkaa wikitekstiä]Periaate kutsuttaessa kolmea ohjelmaa komentorivillä:
$ ohjelma1 | ohjelma2 | ohjelma3
Putkitukseen liittyvät käsitteet standardi syöte (stdin), standardi tuloste (stdout) ja standardi virhe (stderr) datavirrat. Virheet voidaan palauttaa käyttäjän näytölle suoraan.
Esimerkki käyttötapauksesta:
$ ls -l | grep key | less
Esimerkissä ls-ohjelman antamasta hakemistolistauksesta etsitään rivit, joilla on sana key ja lopulta tuloste annetaan sivuttavalle ohjelmalle less.
Ohjelmallisesti
[muokkaa | muokkaa wikitekstiä]Ohjelmissa putkia voidaan käsitellä pipe()
järjestelmäkutsun avulla.
Käsittelevälle ohjelmalle putki näkyy luettavana tai kirjoitettavana tiedostokahvana (engl. file handle), joista edeltävän ohjelman tulostetta voidaan lukea (stdin) ja seuraavalle kirjoittaa (stdout) normaaleilla read()
ja write()
funktioilla.
Katso myös
[muokkaa | muokkaa wikitekstiä]Lähteet
[muokkaa | muokkaa wikitekstiä]- Stevens, W. Richard: Advanced Programming in the UNIX Environment. Addison-Wesley, 1993. ISBN 0201563177.
Viitteet
[muokkaa | muokkaa wikitekstiä]- ↑ a b Michael S. Mahoney: THE UNIX ORAL HISTORY PROJECT princeton.edu. Viitattu 28.11.2017.
- ↑ M. Douglas McIlroy: A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971-1986 (PDF) cs.dartmouth.edu. Viitattu 28.11.2017.
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- The Open Group Base Specifications (englanniksi)