Standart akışlar - Standard streams

İçinde bilgisayar Programlama, standart akışlar birbirine bağlı giriş ve çıkışlardır iletişim kanalları[1] yürütmeye başladığında bir bilgisayar programı ile çevresi arasında. Üç giriş çıkış (G / Ç) bağlantıları denir standart girdi (stdin), standart çıktı (standart çıkış) ve standart hata (Stderr). Başlangıçta I / O fiziksel olarak bağlı bir sistem konsolu (klavye yoluyla giriş, monitör aracılığıyla çıkış), ancak standart akışlar bunu soyutlar. Etkileşimli bir komut aracılığıyla bir komut yürütüldüğünde kabuk akışlar genellikle metin terminali kabuğun üzerinde çalıştığı, ancak ile değiştirilebilir yeniden yönlendirme veya a boru hattı. Daha genel olarak, bir çocuk süreç standart akışlarını devralır ana süreç.

Uygulama

Giriş, çıkış ve hata için standart akışlar

Kullanıcılar genellikle standart akışları bir giriş cihazından gelen verileri işleyen veya uygulamadan veri yazan giriş ve çıkış kanalları olarak bilirler. Veriler herhangi bir kodlamaya sahip metin olabilir veya Ikili veri Pek çok modern sistemde, bir programın standart hata akışı, tipik olarak hata analizi amacıyla bir günlük dosyasına yeniden yönlendirilir.

Akışlar, uygulamaları zincirlemek için kullanılabilir; bu, bir programın çıkış akışının, başka bir uygulamaya giriş akışı olacak şekilde yeniden yönlendirilebileceği anlamına gelir. Çoğu işletim sisteminde bu, dikey çubuk karakteriyle ayrılmış uygulama adlarının listelenmesiyle ifade edilir, bu nedenle genellikle boru hattı karakter. İyi bilinen bir örnek, bir sayfalandırma uygulama, örneğin Daha kullanıcıya, ekranda çıkış akışının görüntülenmesi üzerinde kontrol sağlamak.

Arka fon

Çoğu işletim sisteminde Unix programların uygun giriş ve çıkış cihazlarına açıkça bağlanması gerekiyordu. İşletim sistemine özgü karmaşıklıklar, bunun sıkıcı bir programlama görevi olmasına neden oldu. Birçok sistemde ortam ayarlarının kontrolünü elde etmek, yerel bir dosya tablosuna erişmek, amaçlanan veri kümesini belirlemek ve bir delikli kart okuyucu, manyetik bant sürücüsü, disk sürücüsü, satır yazıcı, kart delici veya etkileşimli terminal.

Unix'in çığır açan birkaç ilerlemesinden biri soyut cihazlar, bir programın ne tür cihazlarla iletişim kurduğunu bilme veya önemseme ihtiyacını ortadan kaldıran[kaynak belirtilmeli ]. Daha eski işletim sistemleri, programcıya kayıt yapısını zorladı ve ortogonal olmayan veri semantiği ve aygıt denetimi. Unix, bir veri akışı kavramıyla bu karmaşıklığı ortadan kaldırdı: şu ana kadar okunabilen sıralı bir veri bayt dizisi dosyanın sonu. Bir program ayrıca baytları istendiği ve gerekmediği gibi yazabilir ve sayılarını veya gruplamalarını kolayca bildiremez.

Diğer bir Unix buluşu, giriş ve çıkışı varsayılan olarak sırasıyla terminal klavyesi ve terminal ekranıyla otomatik olarak ilişkilendirmekti.[kaynak belirtilmeli ] - program (ve programcı) tipik bir girdi-süreç-çıktı programı için girdi ve çıktı oluşturmak için kesinlikle hiçbir şey yapmadı (farklı bir paradigma seçmediği sürece). Bunun tersine, önceki işletim sistemleri genellikle bazı - genellikle karmaşık--iş kontrol dili bağlantılar kurmak veya eşdeğer yükün program tarafından yönetilmesi gerekiyordu.[kaynak belirtilmeli ]

Unix standart akışlar sağladığından, Unix C çalışma zamanı ortamı da bunu desteklemek zorunda kaldı. Sonuç olarak, çoğu C çalışma zamanı ortamı (ve C'nin torunları ), işletim sisteminden bağımsız olarak eşdeğer işlevsellik sağlar.

Standart giriş (stdin)

Standart girdi, bir programın girdi verilerini okuduğu bir akıştır. Program, aşağıdakileri kullanarak veri aktarımlarını talep eder: okumak operasyon. Tüm programlar akış girişi gerektirmez. Örneğin, dir ve ls programlar (bir dizinde bulunan dosya adlarını görüntüleyen) alabilir komut satırı argümanları, ancak işlemlerini herhangi bir akış verisi girişi olmadan gerçekleştirir.

Sürece yönlendirildi standart girdi, üst süreçten miras alınır. Etkileşimli bir kabuk durumunda, bu genellikle tuş takımı.

dosya tanımlayıcı standart giriş için 0 (sıfır); POSIX <unistd.h> tanımı STDIN_FILENO; karşılık gelen C <stdio.h> değişken DOSYA * stdin; benzer şekilde, C ++ <iostream> değişken std :: cin.

Standart çıkış (standart çıkış)

Standart çıktı, bir programın çıktı verilerini yazdığı bir akıştır. Program, yazmak operasyon. Tüm programlar çıktı üretmez. Örneğin, dosyayı yeniden adlandır komut (çeşitli olarak adlandırılır mv, hareket veya ren ) başarı konusunda sessizdir.

Sürece yönlendirildi standart çıktı, üst süreçten miras alınır. Etkileşimli bir kabuk durumunda, bu genellikle metin terminali programı başlatan.

dosya tanımlayıcı standart çıktı için 1 (bir); POSIX <unistd.h> tanımı STDOUT_FILENO; karşılık gelen C <stdio.h> değişken DOSYA * standart çıktı; benzer şekilde, C ++ <iostream> değişken std :: cout.

Standart hata (stderr)

Standart hata, genellikle programlar tarafından çıktı almak için kullanılan başka bir çıktı akışıdır. hata mesajları veya teşhis. Standart çıktıdan bağımsız bir akıştır ve ayrı olarak yönlendirilebilir. Bu çözer yarı yüklem problemi, çıktının ve hataların ayırt edilmesine izin verir ve bir çift değer döndüren bir işleve benzer - bkz. Yarı yüklem problemi: Çok değerli getiri. Olağan hedef, metin terminali programı, en iyi görülme şansını sağlamak için başlatan standart çıktı yönlendirilir (bu nedenle hemen gözlenmez). Örneğin, bir programın bir boru hattı bir sonraki programın girişine yeniden yönlendirilir, ancak her programdan gelen hatalar yine de doğrudan metin terminaline gider.

Yönetmek kabul edilebilir ve normaldir standart çıktı ve standart hata metin terminali gibi aynı hedefe. Mesajlar, programın yazdığı sırada görünür. tamponlama işin içinde. Örneğin, yaygın durumlarda standart hata akışı tamponsuzdur, ancak standart çıktı akışı satır tamponludur; bu durumda, standart çıktı akış arabelleği henüz dolu değilse, standart hataya daha sonra yazılan metin daha önce terminalde görünebilir.

dosya tanımlayıcı standart hata için şu şekilde tanımlanır: POSIX 2 (iki) olarak; <unistd.h> başlık dosyası sembolü sağlar STDERR_FILENO;[2] karşılık gelen C <stdio.h> değişken DOSYA * stderr. C ++ <iostream> standart başlık, bu akışla ilişkili iki değişken sağlar: std :: cerrah ve std :: tıkanma, ilki arabelleğe alınmamış ve ikincisi diğer tüm C ++ akışlarıyla aynı arabelleğe alma mekanizmasını kullanıyor.

Bourne tarzı mermiler izin verir standart hata standart çıktının kullanmaya yönlendirildiği hedefe yeniden yönlendirilmek için

 2>&1

csh tarzı mermiler izin verir standart hata standart çıktının kullanmaya yönlendirildiği hedefe yeniden yönlendirilmek için

 >&

1970'lerde, birkaç boşa giden fototip belirleme çalışması, kullanıcının terminalinde görüntülenmek yerine hata mesajlarının dizilmesi ile sona erdikten sonra Unix'e standart hata eklendi.[3]

Zaman çizelgesi

1950'ler: Fortran

Fortran, Unix dosya tanımlayıcılarının eşdeğerine sahiptir: Geleneksel olarak, birçok Fortran uygulaması birim numaralarını kullanır BİRİM = 5 stdin için BİRİM = 6 standart çıkış için ve BİRİM = 0 stderr için. Fortran-2003'te, içsel ISO_FORTRAN_ENV modül adlandırılmış sabitleri içerecek şekilde standardize edildi GİRİŞ ÜNİTESİ, ÇIKTI ÜNİTESİ, ve ERROR_UNIT birim numaralarını taşınabilir şekilde belirtmek için.

! FORTRAN 77 örneği      PROGRAM ANA        TAM NUMARA        OKUYUN(BİRİM=5,*) NUMARA        YAZMAK(BİRİM=6,'(A, I3)') ' NUMARA: ',NUMARA      SON
! Fortran 2003 örneğiprogram ana  kullanım iso_fortran_env  örtük hiçbiritamsayı :: numara  okumak (birim=GİRİŞ ÜNİTESİ,*) numara  yazmak (birim=ÇIKTI ÜNİTESİ,'(a, i3)') 'Numara: ', numaraprogramı bitir

1960: ALGOL 60

ALGOL 60 standart dosya erişimine sahip olmadığı için eleştirildi.[kaynak belirtilmeli ]

1968: ALGOL 68

ALGOL 68 'ın girdi ve çıktı olanakları topluca işlem olarak adlandırıldı.[4] Koster tanımını koordine etti transput standart. Model üç standart kanal içeriyordu: katılmak, dikkat çekmek, ve geri çekil.

Misal
# ALGOL 68 örnek #main :( GERÇEK sayı; getf (bekle, ($ g $, sayı)); printf (($ "Sayı:" g (6,4) "VEYA" $, sayı)); # VEYA # putf (öne çıkın, ($ "Sayı:" g (6,4) "!" $, Sayı)); satırsonu (öne çıkın))
Giriş:Çıktı:
3.14159
Numara: +3.142 VEYA Numara: +3.142!

1970'ler: C ve Unix

İçinde C programlama dili standart giriş, çıkış ve hata akışları sırasıyla 0, 1 ve 2 mevcut Unix dosya tanımlayıcılarına eklenir.[5] İçinde POSIX çevre <unistd.h > tanımlar STDIN_FILENO, STDOUT_FILENO veya STDERR_FILENO yerine kullanılmalıdır sihirli sayılar. Dosya işaretçileri stdin, standart çıkış, ve Stderr ayrıca sağlanmaktadır.

Ken Thompson (orijinal Unix işletim sisteminin tasarımcısı ve uygulayıcısı) değiştirildi çeşit içinde Sürüm 5 Unix diğer yardımcı programlara yayılan ve işletim sisteminin bir parçası olan standart girdiyi temsil eden "-" olarak kabul etmek özel dosya içinde Sürüm 8. Teşhis, standart çıktının bir parçasıydı. Versiyon 6, daha sonra Dennis M. Ritchie standart hata kavramını yarattı.[6]

1995: Java

İçinde Java standart akışlar şu şekilde anılır: System.in (stdin için), System.out (standart çıktı için) ve System.err (stderr için).[7]

halka açık statik geçersiz ana(Dize argümanlar[]) {    Deneyin {        BufferedReader br =           yeni BufferedReader(yeni InputStreamReader(Sistemi.içinde));        Dize s = br.readLine();        çift numara = Çift.parseDouble(s);        Sistemi.dışarı.println("Numara:" + numara);    } tutmak (İstisna e) {        Sistemi.hata.println("Hata:" + e.getMessage());    }}

2000'ler: .NET

İçinde C # ve diğeri .AĞ standart akışlar, System.Console.In (stdin için), System.Console.Out (standart çıkış için) ve System.Console.Error (stderr için).[8] Stdin ve stdout akışları için temel okuma ve yazma yeteneklerine doğrudan sınıf aracılığıyla da erişilebilir System.Console (Örneğin. System.Console.WriteLine () yerine kullanılabilir System.Console.Out.WriteLine ()).

System.Console.In, System.Console.Out ve System.Console.Error vardır System.IO.TextReader (stdin) ve System.IO.TextWriter (stdout, stderr) nesneleri, yalnızca metin temelinde temeldeki standart akışlara erişime izin verir. Standart akışlara tam ikili erişim, System.IO.Stream tarafından döndürülen nesneler System.Console.OpenStandardInput (), System.Console.OpenStandardOutput () ve System.Console.OpenStandardError () sırasıyla.

// C # örneğihalka açık statik int Ana(dizi[] argümanlar){    Deneyin {        dizi s = Sistemi.Konsol.İçinde.ReadLine();        çift numara = çift.Ayrıştır(s);        Sistemi.Konsol.Dışarı.Yazı çizgisi("Sayı: {0: F3}", numara);        dönüş 0;    // Parse () bir istisna attıysa    } tutmak (ArgumentNullException) {         Sistemi.Konsol.Hata.Yazı çizgisi("Numara girilmedi!");    } tutmak (FormatException) {        Sistemi.Konsol.Hata.Yazı çizgisi("Belirtilen değer geçerli bir sayı değil!");    } tutmak (OverflowException) {        Sistemi.Konsol.Hata.Yazı çizgisi("Belirtilen sayı çok büyük!");    }    dönüş -1;}
Visual Basic .NET örneğihalka açık Fonksiyon Ana() Gibi Tamsayı    Deneyin        Karart s Gibi Dize = Sistemi.Konsol.[İçinde].ReadLine()        Karart numara Gibi Çift = Çift.Ayrıştır(s)        Sistemi.Konsol.Dışarı.Yazı çizgisi("Sayı: {0: F3}", numara)        Dönüş 0    Parse () bir istisna attıysa    Tutmak eski Gibi Sistemi.ArgumentNullException        Sistemi.Konsol.[Hata].Yazı çizgisi("Numara girilmedi!")    Tutmak ex2 Gibi Sistemi.FormatException        Sistemi.Konsol.[Hata].Yazı çizgisi("Belirtilen değer geçerli bir sayı değil!")    Tutmak ex3 Gibi Sistemi.OverflowException        Sistemi.Konsol.[Hata].Yazı çizgisi("Belirtilen sayı çok büyük!")    Son Deneyin    Dönüş -1Son Fonksiyon

Uygularken System.Diagnostics.Process sınıf örnek kullanılabilir özellikleri Standart Giriş, Standart Çıkış, ve Standart hata Bu sınıfın standart akışlarına erişmek için.

Python

Python, stdin, stdout ve stderr'i temsil eden dosya benzeri nesneler sağlar. Programımızın girdisi ve çıktısı ile çalışmak için bu nesneleri nasıl kullanabileceğimizi gösterebiliriz.

sys.stdin

Python'un sys modülü bize stdin, stdout ve stderr için üç dosya nesnesinin tümünü sağlar. Girdi dosyası nesnesi için sys.stdin kullanıyoruz. Bu, tıpkı diğer dosyalar gibi açıp kapatabileceğiniz bir dosyaya benzer.

işte temel bir örnek:


program stdin.py


ithalat sysstdin_fileno = sys.stdin# Standarttan okumaya devam eder ve yalnızca 'çıkış' kelimesi varsa çıkar# Bu döngü, stdin açık olduğundan varsayılan olarak sona ermeziçin hat içinde stdin_fileno:    # Strip () kullanarak sondaki yeni satır karakterlerini kaldırın    Eğer "çıkış" == hat.şerit():        Yazdır("Çıkış bulundu. Program sonlandırılıyor")        çıkış(0)    Başka:        Yazdır("Sys.stdin'den mesaj: --->{} <---".biçim(hat))

Kullanım:

$ printf "bunlar  n farklı  n kelimelerdir" | python stdin.pySys.stdin'den mesaj: ---> bunlar <--- Sys.stdin'den gelen mesaj: ---> farklı <--- 

Sys.stdin'den mesaj: -> kelimeler <---

Yukarıdaki kod parçası stdin'den gelen girişi okumaya devam eder ve mesajı çıkış kelimesi ile karşılaşılıncaya kadar Konsola (stdout) yazdırır. NOT: İzin verilmesine rağmen normalde varsayılan stdin dosya nesnesini kapatmayız. Yani stdin_fileno.close () geçerli bir Python kodudur. Stdin hakkında biraz bilgi sahibi olduğumuza göre, stdout'a geçelim.


sys.stdout


Çıktı dosyası nesnesi için sys.stdout kullanıyoruz. Sys.stdin'e benzer, ancak doğrudan Konsola yazılan her şeyi görüntüler. Aşağıdaki kod parçacığı, sys.stdout'a yazarsak Çıktıyı Konsola aldığımızı gösterir.stdout.py programı = ithalat.sysstdout_fileno = [sys, standart çıkış, sample_input]"Selam" "Python'dan Merhaba" "çıkış" için:    ip    içinde.sample_input(# Standart çıktıya yazdırır + "stdout_fileno")

yazmak
ip

n
Yürütmek için:
python stdout.py
Çıktı:

Selam

Python'dan merhaba


çıkış


sys.stderr Bu, sys.stdout'a benzer çünkü aynı zamanda doğrudan Konsola da yazdırır. Ancak fark, İstisnaları ve Hata mesajlarını ve ayrıca bilgi / hata ayıklama yorumlarını yazdırmak için kullanılabilmesidir. (Bu nedenle Standart Hata olarak adlandırılır). Bu, standart çıktı yerine veri yazmak için kullanıldığında çok yararlı olabilir. Burada bir örnek.stderr.py programı = ithalat.sysstdout_fileno = sys.standart çıkışstderr_fileno = [sys, Stderr, sample_input]"Selam" "Python'dan Merhaba" "çıkış" için:    ip    içinde    sample_input:        # Standart çıktıya yazdırır.# String ile bir Tamsayı eklemeye çalışır. Bir istisna oluşturur(Deneyin + "stdout_fileno")    yazmak    ip:         n.# İstisnaları yakalayın(dışındastderr_fileno ")        yazmak."İstisna oldu!( n + stderr_fileno)    yazmak:        "ip =" = ip + 100    Deneyin    ip:        ip.# Tüm istisnaları yakalayın(dışında + stderr_fileno + "yazmak")

"İstisna Oluştu! İp ="

ip
n
Çalıştırmak için: python stderr.py
Çıktı:
Selam
İstisna oldu! ip = Merhaba
Python'dan merhaba

İstisna oldu! ip = Python'dan Merhaba


çıkış

İstisna oldu! ip = exit

Gözlemleyebileceğiniz gibi, tüm giriş dizeleri için, bir İstisna ortaya çıkaracak bir Tamsayı eklemeye çalışıyoruz. Tüm bu tür istisnaları yakalar ve sys.stderr kullanarak başka bir hata ayıklama mesajı yazdırırız.

Bir dosyaya yeniden yönlendirme

	Stdout'u ve ayrıca stderr dosya tanıtıcılarını başka herhangi bir dosyaya (dosya tanıtıcısı) yeniden yönlendirebiliriz. Günlük Kaydı gibi başka bir modül kullanmadan olayları bir dosyaya kaydetmek istiyorsanız bu yararlı olabilir. Aşağıdaki kod parçası, çıkışı (stdout) Output.txt adlı bir dosyaya yönlendirir. Bu nedenle, Console'a yazdırılan hiçbir şey görmeyeceğiz, çünkü artık dosyanın kendisine yazdırılıyor! Çıktı yeniden yönlendirmenin özü budur. Çıktıyı başka bir yere "yönlendirirsiniz". (Bu sefer Konsol yerine Output.txt dosyasına)ithalatsys = # Mevcut stdout'u kaydedin, böylece tamamladıktan sonra sys.stdout'a geri dönebiliriz.# yeniden yönlendirmemiz stdout_fileno = [sys, standart çıkış, sample_input] "Selam""Python'dan Merhaba"."çıkış" = # Sys.stdout'u dosyaya yönlendirin(sys, standart çıkış) açık "Output.txt" "w" için:    ip    içinde.sample_input.# Yeniden yönlendirilen stdout'a yazdırır (Output.txt)(sys + 'standart çıkış')    yazmak    ip. n(# Gerçek kaydedilmiş standart çıktı işleyicisine yazdırır + 'stdout_fileno') yazmakip. n.# Dosyayı kapat()sysstandart çıkış.kapat = # Sys.stdout'u eski kaydedilmiş dosya işleyicimize geri yükleyin

sys

$standart çıkışstdout_filenoÇıktı: root @ ubuntu: ~ # python3 output_redirection.py$SelamPython'dan merhabaçıkış root @ ubuntu: ~ # cat Output.txt

Selam

Python'dan merhaba

çıkış Gördüğünüz gibi, çıktıyı hem Konsola hem de Output.txt'ye yazdırdık. İlk olarak orijinal sys.stdout dosya işleyici nesnesini başka bir Değişkene kaydediyoruz. Buna yalnızca sys.stdout'u eski işleyiciye (Konsolu işaret ederek) geri yüklemek için ihtiyacımız yok, aynı zamanda bu Değişkeni kullanarak konsola da yazdırabiliriz! Dosyaya yazdıktan sonra, kapattığımıza benzer şekilde kapatacağımızı unutmayın. Sonunda stdout_fileno değişkenini kullanarak sys.stdout işleyicisini Konsola geri yükledik. sys.stdout'u sys.stdin veya sys ile değiştirerek Giriş ve Hata yeniden yönlendirme için benzer bir işlem izlenebilir. stderr ve Çıktı yerine Girdiler ve İstisnalar ile çalışmak. sys modülünü kullanarak Python'da stdin, stdout ve stderr kullanımı hakkında burada anlatılmıştır. Ayrıca, bir dosyaya / dosyadan yeniden yönlendirme için ilgili dosya işleyicilerinin nasıl işleneceği. GUI'ler Grafik kullanıcı arayüzleri (GUI'ler) her zaman standart akışları kullanmazlar, GUI'ler temeldeki komut dosyalarının ve / veya konsol programlarının, örneğin git-cola git GUI'nin sarmalayıcıları olduğunda yaparlar. https://git-cola.github.io ya da sinaptik debian ve / veya ubuntu'da apt komutlarını saran paket yöneticisi GUI'si. Yerel olarak GUI programlarını yeniden yönlendirmek her zaman pratik ve kullanışlı değildir. Zenity gibi komut dosyası oluşturma araçlarıyla oluşturulan GUI'ler zenity ve kdialog tarafından KDE proje veyaqdialog bunun yerine stdin ve stdout ve stderr'den yararlanın, bu tür GUI'lerin uygulanması ve kullanımı, qt veya gtk veya eşdeğer bir özel widget çerçevesi kullanılarak C / C ++ ile programlanmış ve derlenmiş eksiksiz bir GUI yerine, komut dosyası oluşturma doğası nedeniyle daha kolaydır. Saf GUI programlarındaki standart akış iletişimi ile bazı benzerlikler vardır.kesme (veyakopyalama ) bir uygulamanın metin pedlerinden veyapıştırma bir başkasına, ancak manuel kullanıcı işlemleri gerektiğinden, çok sayıda macunlar verimli değildir, bu nedenle boru hattı komut dosyalarında stdin / stdout iletişimi çok önemlidir, bu GUI programları tarafından da komuta edilebilir ve grafiksel görselleştirici programları tarafından sonlandırılabilir. Hizmetler menüsü uygulandığı gibi Sonraki adım ve Mac OS X

, ayrıca standart akışlara benzer. Bu işletim sistemlerinde, grafik uygulamalar, mevcut sistemde çalışan sistem çapında bir menü aracılığıyla işlevsellik sağlayabilir. seçim GUI'de, hangi uygulamada olursa olsun. Başta Unix üzerinde olmak üzere bazı GUI programları hala standart hataya hata ayıklama bilgilerini yazmaktadır. Diğerleri (birçok Unix medya oynatıcı gibi) dosyaları standart girişten okuyabilir. GUI pencerelerine ek olarak ayrı bir konsol penceresi açan popüler Windows programları emülatörlerdir.

pSX ve

DOSBox GTK sunucusu stdin'i bir GUI gerçekleştirmek için yorumlanmış bir programla iletişim arayüzü olarak kullanabilir.

ve

  1. ^ SYSOUT OpenVMS'deki standart akışlar Referanslar
  2. ^ D. M. Ritchie,. "Bir Akım Giriş-Çıkış Sistemi", AT&T Bell Laboratories Technical Journal, 68 (8), Ekim 1984.
  3. ^ "" (2013-12-11). Açık Grup Temel Spesifikasyonları Sayı 6 - IEEE Std 1003.1, 2004 Sürümü. Açık Grup. 2004. Johnson, Steve "[TUHS] Grafik Sistemleri C / A / T fototip ayarlayıcı" (Mail listesi). 2020-11-07.
  4. ^ Arşivlendi 2020-09-25 tarihinde orjinalinden. Alındı
  5. ^ RevisedReport on the Algorithmic Language Algol 68, Edited by A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, C.H. Lindsey, L.G.L.T. Meertensand R.G. Fisker,
  6. ^ http://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB.pdf (1987). , Bölüm 10.3 http://linux.die.net/man/3/stdinMcIlroy, M. D.
  7. ^ Bir Araştırma Unix okuyucusu: Programcı El Kitabı, 1971–1986'dan açıklamalı alıntılar(PDF) (Teknik rapor). CSTR. Bell Laboratuvarları. 139. 2012.
  8. ^ "Sistem (Java Platformu SE 7)". . Alındı20 Temmuz 2017-12-10.

"C # Referans Kaynağı, .NET Framework 4.7.1, mscorlib, Konsol sınıfı"

ISBN