LabHub
배우기 러닝패스 코스

실패했는데 종료 코드는 0 이었다 · 종료 코드 0 은 약속이다 · 퀴즈

퀴즈: 종료 코드와 두 개의 출력

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 백업 검사 스크립트가 `print("backup missing!")` 만 찍고 끝났다. cron 이 본 종료 코드는?

    1. 예외가 없었으므로 0 이고, cron 은 성공으로 기록한다
    2. print 가 경고를 찍었으므로 1 이 된다
    3. 메시지에 느낌표가 있으면 파이썬이 2 로 끝낸다
    4. 표준 출력에 글이 남으면 종료 코드는 정의되지 않는다
  2. sys.exit 문서가 적은 유닉스 관례에서 종료 코드 2 는 무엇에 쓰는가?

    1. 검사 대상이 조건을 어겼을 때
    2. 경고 수준의 문제가 있을 때
    3. 명령줄 문법(인자) 오류일 때
    4. 프로그램이 신호로 죽었을 때
  3. logging.basicConfig 를 부르지 않고 log.warning() 을 썼다. 메시지는 어디로 가는가?

    1. 표준 출력으로 가고 형식은 메시지만이다
    2. 표준 오류로 가고 형식은 심각도:로거 이름:메시지 다
    3. 아무 데도 가지 않는다 — 핸들러가 없기 때문이다
    4. 현재 디렉터리의 app.log 파일에 쌓인다
  4. 도구가 JSON 을 표준 출력에 내는데 중간에 진행 메시지를 print() 로 찍었다. 무엇이 깨지는가?

    1. 종료 코드가 1 로 바뀌어 파이프라인이 멈춘다
    2. logging 핸들러가 중복 등록되어 메시지가 두 번 찍힌다
    3. 표준 오류가 비어서 사람이 진행 상황을 볼 수 없다
    4. 표준 출력에 JSON 이 아닌 줄이 섞여 다음 단계의 파싱이 실패한다
  5. 잡지 않은 예외로 끝난 파이썬 프로그램의 종료 코드와 출력은?

    1. 종료 코드 1, 트레이스백은 표준 오류에 찍힌다
    2. 종료 코드 2, 트레이스백은 표준 출력에 찍힌다
    3. 종료 코드 0, 트레이스백만 표준 오류에 찍힌다
    4. 종료 코드 1, 트레이스백은 표준 출력에 찍힌다
  6. main(argv=None) -> int 와 파일 맨 아래의 sys.exit(main()) 모양을 권하는 이유는?

    1. parse_args 가 argv 없이는 동작하지 않기 때문이다
    2. 임포트해도 실행되지 않아 pytest 에서 main([...]) 을 직접 부를 수 있다
    3. sys.exit 을 함수 안에서 부르면 종료 코드가 무시되기 때문이다
    4. argparse 가 main 이라는 이름의 함수를 요구하기 때문이다