python 프로그래밍, 쉘 명령 실행이 끝났음을 detect 하기

bong90의 이미지

안녕하세요 python으로 스크립트를 짜는 중인데, 궁금한 사항이 생겨 질문합니다.

제가 원하는 동작은 (스크립트와 같은 path에 있는)소스를 컴파일하고,

그 결과물을 가지고 어떤 동작을 하고, 그 동작의 결과물로 또 다른 동작을 해야합니다.

일단은 세 개의 스크립트 파일로 나누었지만 궁극적으로는 하나의 스크립트 상에서 실행하도록 해야하는데요..

스크립트 상의 각각 다른 동작들이 이전에 실행된 쉘명령의 결과물에 의존하기 때문에, 조금 어려움이 있네요.

궁금한 것이, 스크립트 내에서 쉘 명령을 실행시켰을 때 해당 명령이 완료되어 bash로 리턴되었음을 detect할 수 있는 방법이 있을까요?

적당한 시간을 sleep 할까 생각도 했지만 이 방법은 혹여나 컴파일이 오래걸린다던지 하면 문제가 생기므로 안될것 같고,

뭔가 wait(bash_return == True) 이런 로직이 있으면 하는데.. ㅠ

방법이 있을런지요?

감사합니다.

raymundo의 이미지

제가 파이썬은 잘 모릅니다만,

웬만한 언어들에서 외부 프로그램을 실행하는 방법을 가장 간단한 형태로 사용하면
그 외부프로그램을 실행하는 동안은 대기하고 있다가 실행이 끝나야만 다음으로 진행할 텐데요.
굳이 이런 고민을 하실 이유가...

그냥 os.system("쉘 명령") 하는 걸로는 부족하신가요?

좋은 하루 되세요!

bong90의 이미지

답변에 감사드립니다.

그 방식으로 실행하고 있었는데, 저는 단순히 쉘로 명령을 던져주기만 한다고 생각했었거든요..(추측하기로)
말씀하신대로 os.system , subprocess.call 같은 명령어가 쉘 명령 실행이 끝나기를 기다려주는 거라면
그대로 연결해서 사용하면 되겠네요 ^^ 감사합니다.

익명 사용자의 이미지

subprocess 모듈이 찾으시는 것 같습니다.
https://docs.python.org/2/library/subprocess.html

bong90의 이미지

subprocess.call 을 사용하고 있었는데, doc에

Wait for command to complete, then return the returncode attribute.

라는 설명이 있군요!

감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.