CALL과 START의 차이점 (도스배치, Windows CLI)

이번 글은 CALL과 START의 차이점에 대한 포스팅이다.

회사프로젝트의 소스가 빌드가 무척 오래 걸리기 때문에 윈도우 작업 스케줄러로 매일 출근시간에 맞춰 빌드 후 IDE와 기타 필요한 프로그램들도 자동으로 다 띄워져 있도록 하고 있다.
추가로 셀레늄과 curl로 랜더링에 시간이 걸리는 페이지들도 접속해서 미리 캐시까지 생성하도록 해두기 때문에 그야말로 커피한잔 들고 PC에 로그인만 하면 바로 일에 몰입할 수 있는 상태가 된다 ^^

집중하는 모습
아놔.. 왜 오늘은 안됬지???

그런데 전날 빌드 배치파일을 좀 고쳤더니 오늘따라 준비 작업이 완료되지 않아 원인분석을 해보니 배치파일에 사용한 call과 start 명령어가 하는 역할이 달라서 였다.

call

  1. 순차실행 (앞의 프로그램이 끝나야 다음 프로그램 시작)
  2. 변수반환(동일한 CMD창에서 실행되므로 변수에 엑세스 가능)

start

  1. 동시실행 (별도의 창으로 실행하므로 거의 동시에 주루룩 실행됨)
  2. 변수반환 불가 (별도의 CMD창에서 실행되므로 부모창에 변수반환 불가. 단, 부모창에서 실행시킬 프로그램으로 인자 전달은 가능)

내 경우 종료되지 않는 프로그램을 call로 호출했기 때문에 그 시점에서 배치의 실행이 멈춰버린 것이다. start를 쓸 자리에 call을 썼기 때문인데 start로 수정하니 문제가 사라졌다.

단순히 프로그램을 실행만 시키면 되고 리턴값을 받을 필요가 없을 경우는 start를 쓰고 순차적으로 실행(앞의 프로그램 종료 후 다음 프로그램 실행)시켜야 하면 call또는 start에 /wait 옵션을 줘서 쓰고 순차적으로 실행해야 하면서 실행시킨 프로그램에서 뭔가 값을 받아야 한다면 call을 사용하면 된다.

스택 오버플로우에 좀 더 자세한 설명이 있으니 참고

생계형 특급 개발자이자 아들 하나 있는 평범한 아빠. 취미는 요리, 캠핑, 뮤직 페스티발 다니기 등이지만 이 블로그에는 주로 개발관련된 내용만 올릴 예정입니다. 워드프레스를 시작한지 얼마 되지않아 사이트가 허전하지만 좋은 내용으로 채우도록 노력하겠습니다. 자주 놀러오세요 ^^
Posts created 54

One thought on “CALL과 START의 차이점 (도스배치, Windows CLI)

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top