Skip to content

Latest commit

ย 

History

History
104 lines (81 loc) ยท 6.98 KB

File metadata and controls

104 lines (81 loc) ยท 6.98 KB

Standard Stream(ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ)

์ŠคํŠธ๋ฆผ(stream)

  • ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ ์š”์†Œ
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ, ํŒจํ‚ท, ๋น„ํŠธ ๋“ฑ์˜ ์ผ๋ จ์˜ ์—ฐ์†์„ฑ์„ ๊ฐ–๋Š” ํ๋ฆ„
  • ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ์˜ ์˜ˆ์‹œ๋กœ๋Š” ์Œ์„ฑ, ์˜์ƒ, ํ…์ŠคํŠธ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ
    • ์œ ํŠœ๋ธŒ๊ฐ™์€ ์‚ฌ์ดํŠธ์—์„œ ์˜์ƒ์„ ๋ณด๋‚ผ ๋•Œ ์˜์ƒ ํŒŒ์ผ์„ ํ†ต์ฑ„๋กœ ๋ณด๋‚ธ๋‹ค๋ฉด ๋ชจ๋‘ ๋ณด๋‚ด์งˆ ๋•Œ ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ์˜์ƒ์„ ๋ณผ ์ˆ˜ ์—†์ง€๋งŒ, ์˜์ƒ ํŒŒ์ผ์„ ์ž˜๊ฒŒ ์ชผ๊ฐœ ์—ฐ์†์ ์œผ๋กœ ์ค„์ง€์–ด ์ปดํ“จํ„ฐ๋กœ ๋ณด๋‚ด๋ฉด ์šฐ๋ฆฌ๋Š” ๋จผ์ € ๋„์ฐฉํ•œ ์˜์ƒ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ. ์ด๋ ‡๊ฒŒ ์ค„์ค„์ด ์—ฐ์†์ ์œผ๋กœ ํ˜๋Ÿฌ๊ฐ€๋Š” ๊ฒƒ์ด ์ŠคํŠธ๋ฆผ์˜ ๋™์ž‘ ๋ฐฉ์‹

๋ฆฌ๋‹ค์ด๋ ‰์…˜(Redirection)

  • ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์˜ ๋ฐฉํ–ฅ์„ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” ๊ฒƒ
  • ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ‘œ์ค€ ์ž…๋ ฅ์„ ํ‚ค๋ณด๋“œ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ํ‘œ์ค€ ์ถœ๋ ฅ์„ ๋””์Šคํ”Œ๋ ˆ์ด๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ๋กœ ํ•  ์ˆ˜ ์žˆ์Œ

ํŒŒ์ดํ”„(Pipe)

  • ๋ผ๋‹ค์ด๋ ‰์…˜์ด ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์˜ ๋Œ€์ƒ์„ ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค๋ฉด, ํŒŒ์ดํ”„๋Š” ํ‘œ์ค€ ์ž…์ถœ๋ ฅ์˜ ๋ฐฉํ–ฅ์„ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ
  • ps ๋ช…๋ น์€ ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ช…๋ น์ด๊ณ , grep ๋ช…๋ น์€ ํŒŒ์ผ์—์„œ ํŠน์ • ๋‹จ์–ด๋‚˜ ํŒจํ„ด์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ช…๋ น

ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ

  • ์šฐ๋ฆฌ๊ฐ€ ํ‚ค๋ณด๋“œ๋‚˜ ๋งˆ์šฐ์Šค ๊ฐ™์€ ๋‹จ๋ง๊ธฐ๋ฅผ ํ†ตํ•ด ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ(๋ฌธ์ž, ํŒŒ์ผ)๋ฅผ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ์ปดํ“จํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ๊ทธ์— ์•Œ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ์‹œ์ผœ์ฃผ๋Š”๋ฐ ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์€ ์ด๋ฅผ ์ถ”์ƒํ™” ํ•œ๊ฒƒ
    • ๋ณดํ†ต ์ž…์ถœ๋ ฅ์€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ํ‚ค๋ณด๋“œ์™€ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ํ†ตํ•ด ์ผ์–ด๋‚˜๋Š”๋ฐ, ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์ด๋ž€ ์ด ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ์˜ ์ž…๋ ฅ๊ณผ ๋ชจ๋‹ˆํ„ฐ๋กœ์˜ ์ถœ๋ ฅ์„ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ. ์šด์˜์ฒด์ œ๊ฐ€ ๊ธฐ๋™ ๋˜๋ฉด ๋Œ€ํ™”ํ˜• ์…ธ (bash, zsh ๊ฐ™์€) ์€ 3๊ฐœ์˜ ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์ด ์ƒ์†ํ•จ
  • ์ŠคํŠธ๋ฆผ์€ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์€ ์ˆœ์ฐจ์ ์ธ ๋ฐ์ดํ„ฐ ๋ฐ”์ดํŠธ๋“ค์„ ํŒŒ์ผ์˜ ๋(End of File, EOF)๊นŒ์ง€ ์ฝ์–ด ํ”„๋กœ๊ทธ๋žจ์€ ์“ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋‚จ์•˜๋Š”์ง€, ํ˜น์€ ์–ด๋–ค์‹์œผ๋กœ ๋ฌถ์—ฌ ์žˆ๋Š”์ง€ ์•Œ ํ•„์š”์—†์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Œ
    • ์ŠคํŠธ๋ฆผ์€ ๋ฐ”์ดํŠธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ๊ฒฐํ†ต๋กœ๋กœ ๋ฌผ์ด ํ๋ฅด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ
    • ๋จผ์ € ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๋ฐ›๊ฒŒ๋˜์–ด ์žˆ์–ด ์—ฐ์†์ ์œผ๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค๋Š” ์ ์—์„œ ํ(queue)์˜ FIFO(First in First Out)๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Œ
  • ์ฆ‰, ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์€ ๋‹จ๋ง๊ธฐ์™€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์„ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ
  • ์ด๋Ÿฌํ•œ ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์—๋Š” ์•„๋ž˜์˜ 3๊ฐ€์ง€ ์ŠคํŠธ๋ฆผ์ด ์กด์žฌ
    • ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ(standard input stream)
    • ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ(standard output stream)
    • ํ‘œ์ค€ ์˜ค๋ฅ˜ ์ŠคํŠธ๋ฆผ(standard error stream)

C/C++ ์—์„œ์˜ ์ŠคํŠธ๋ฆผ : ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ(standard stream)

  • ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์€ ์œ ๋‹‰์Šค์™€ ์œ ๋‹‰์Šค ๊ณ„์—ด์˜ OS(linux, mac...)์—์„œ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋‹จ๋ง๊ธฐ ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ํ†ต๋กœ๋ฅผ ์˜๋ฏธ
    • ์œ ๋‹‰์Šค ์ด์ „์˜ ์šด์˜์ฒด์ œ๋Š” ์žฅ์น˜์— ๋Œ€ํ•œ ์ž…์ถœ๋ ฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์žฅ์น˜์— ๋Œ€ํ•œ ํ™˜๊ฒฝ์„ค์ •์„ ์ผ์ผํžˆ ํ•ด์•ผํ•˜๋Š” ๋“ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊นŒ๋‹ค๋กœ์› ์Œ
  • C ์–ธ์–ด ์—์„œ์˜ ์ŠคํŠธ๋ฆผ์€ ๊ฒฐ๊ตญ ํ”„๋กœ๊ทธ๋žจ์„ ๋“œ๋‚˜๋“œ๋Š” ๋ฐ์ดํ„ฐ, ํŒŒ์ผ๋“ฑ์„ ๋ฐ”์ดํŠธ์˜ ํ๋ฆ„์œผ๋กœ ๋‚˜ํƒ€๋ƒ„

JAVA์—์„œ์˜ ์ŠคํŠธ๋ฆผ : ์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ(Input/Output Stream)

  • ์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์ด๋ž€ ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ถœ๋ฐœ์ง€๋‚˜ ๋˜๋Š” ๋„์ฐฉ์ง€๋ƒ์— ๋”ฐ๋ผ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜๊ฐ€ ๊ฒฐ์ •๋จ
    • ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋• ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋””๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ด์šฉ. ์—ฌ๊ธฐ์„œ ์ŠคํŠธ๋ฆผ ์—ญ์‹œ ํ”„๋กœ๊ทธ๋žจ์„ ๋“œ๋‚˜๋“œ๋Š” ๋ฐ์ดํ„ฐ, ํŒŒ์ผ ๋“ฑ์˜ ๋ฐ”์ดํŠธ ํ๋ฆ„์ž„
    • ์ž๋ฐ”์—์„œ๋Š” ๋ชจ๋“  I/O๊ฐ€ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง
  • ์ž๋ฐ”๋Š” ํ•ด๋‹น ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ์„ System ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ
  • ์ž๋ฐ”์—์„œ๋Š” ์ฒ˜๋ฆฌ ๋‹จ์œ„์— ๋”ฐ๋ผ Reader - inputStream / Writer - outputStream ์œผ๋กœ ๋‚˜๋‰˜์–ด ํ†ต์‹ ํ•จ
    • InputStream์€ System.in์„ ์‚ฌ์šฉ
    • OutputStream์€ System.out์„ ์‚ฌ์šฉ
    • InputStream/OutputStream์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ import ํ•ด์ฃผ์–ด์•ผ ํ•จ
  • Input Stream์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ž…๋ ฅํ•ด๋„ 1๊ฐœ์˜ ๋ฌธ์ž๋ฐ–์— ๋ชป ๊ฐ€์ ธ์˜ค๋ฉฐ ๊ธฐ๋ณธํ˜•์€ int๋กœ ๋ฐ›์•„์˜ด
  • ๋ฌธ์ž๋งŒ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒํ•˜๊ธฐ์œ„ํ•ด ๋ฌธ์ž ๋‹จ์œ„์˜ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์ธ BufferedReader/BufferedWriter ๋ฅผ ์‚ฌ์šฉ. Scanner ํด๋ž˜์Šค๋„ ์žˆ์ง€๋งŒ ์ฃผ๋กœ BufferedReader๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•จ
    • ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ
      • print()
      • println()
      • printf()
      • OutputStreamWriter ํด๋ž˜์Šค
    • ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ
      • read() // int ํ˜•์œผ๋กœ ์ž…๋ ฅ ๋ฐ›์Œ
      • Scanner ํด๋ž˜์Šค
      • InputStreamReader ํด๋ž˜์Šค

JAVA์—์„œ์˜ ์ŠคํŠธ๋ฆผ : ๋ฐ˜๋ณต์ž ์ŠคํŠธ๋ฆผ(Stream)

  • ์ž๋ฐ”8๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ ๋ฐ˜๋ณต์ž๋กœ ์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด ๋“ฑ์˜ ์ €์žฅ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐธ์กฐํ•ด์„œ ๋žŒ๋‹ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ
  • ์‰ฝ๊ฒŒ ๋งํ•ด ์ด์ „์˜ ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฐฐ์—ด ๋“ฑ์˜ ์›์†Œ๋ฅผ ๊ฐ€๊ณตํ•  ๋•Œ for, foreach ๋“ฑ์„ ๋ฐ˜๋ณต์ž๋ฅผ ํ†ตํ•ด์„œ ๊ฐ๊ฐ์˜ ์›์†Œ์— ์ ‘๊ทผํ•ด ์›์†Œ๋ฅผ ๊ฐ€๊ณตํ•˜์˜€์ง€๋งŒ ์ŠคํŠธ๋ฆผ์˜ ๊ฒฝ์šฐ ํŠน์ • ํƒ€์ž…์˜ ์ŠคํŠธ๋ฆผ์„ ์„ ์–ธํ•˜์—ฌ ํ•„์š”ํ•œ ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•˜์—ฌ ๋ฐ˜ํ™˜

ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ(standard input stream, STDIN)

  • ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์— ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ(data stream)์œผ๋กœ ํ‘œ์ค€ ์ž…๋ ฅ์ด๋ผ๊ณ ๋„ ํ•จ
  • ์ž…๋ ฅ์ŠคํŠธ๋ฆผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‚ค๋ณด๋“œ๋กœ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์œผ๋‚˜ ๋ฆฌ๋‹ค์ด๋ ‰์…˜(redirection)์„ ํ†ตํ•ด ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  • ํ•˜์ง€๋งŒ ํ•ญ์ƒ ์ž…๋ ฅ์ด ์กด์žฌํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜. command line argument๋งŒ ์กด์žฌํ•˜๊ณ  ํ‚ค๋ณด๋“œ๋‚˜ ํŒŒ์ผ์œผ ํ†ตํ•œ ์ž…๋ ฅ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Œ

ํ‘œ์ค€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ(standard output stream, STDOUT)

  • ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ถœ๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…์ŠคํŠธ ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด ๋ชจ๋‹ˆํ„ฐ์— ์ถœ๋ ฅ๋˜์ง€๋งŒ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์„ ํ†ตํ•ด ํŒŒ์ผ์— ์ถœ๋ ฅ๊ฐ’์„ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ค„ ๋‹จ์œ„์˜ ๋ฒ„ํผ๋ง์ด ์กด์žฌ
  • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•ญ์ƒ ์ถœ๋ ฅ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

ํ‘œ์ค€ ์˜ค๋ฅ˜ ์ŠคํŠธ๋ฆผ(standard error stream, STDERR)

  • ํ‘œ์ค€ ์˜ค๋ฅ˜ ์ŠคํŠธ๋ฆผ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค๋ฅ˜๋ฉ”์‹œ์ง€๋‚˜ ์ง„๋‹จ์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜์ ์œผ๋กœ ์“ฐ์ด๋Š” ๋˜ ๋‹ค๋ฅธ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ
  • ๋ช…๋ น ์ˆ˜ํ–‰์— ์‹คํŒจํ•˜์˜€์„ ๋•Œ ์ถœ๋ ฅ๋˜๋Š” ์˜ค๋ฅ˜๋“ค์„ ์ถœ๋ ฅ
  • ๋ฒ„ํผ๋ง์ด ์—†์–ด๋„ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅ
  • ํ‘œ์ค€ ์ถœ๋ ฅ๊ณผ๋Š” ๋ณ„๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ„๋„๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋  ์ˆ˜ ์žˆ์Œ

22-11-28

Reference