A라는 프로세스가 돌아가고 있는지? 중복 실행..

Seven..의 이미지

A라는 프로세스가 돌고 있지 않는 경우
A를 실행시키는 프로그램을 구현하려고 하는데,

A라는 프로세스는 하나만 돌아가게 하고 싶습니다.

실행시키는 프로세스가 여러개가 될 수 있기 때문에,

A가 실행중이면 더이상 실행되지 않도록..

예를들어서.. 음 뭐가 있을까요 -_-;;;
윈도우에 메신저 같은거는.. 실행중이면,
다시 실행시켜도 실행이 되지 않잖아요?
단지 실행중인 프로세스를 화면에 띄워준다거나..
저는 아무일도 하지 않으려고 하는데..

파일 등을 이용하려고 생각을 해보았는데
실행하며 파일을 생성하고, 끝내며 지우고..
A가 비정상적인 종료로 파일을 남겨두게 되면
실행여부가 불확실해지니..

A가 실행중인지 실행여부를 알 수 있는 방법이 없을까요?
그리고 A라는 프로그램을

실행중일때 다시 실행시켜도 실행되지 않도록..(말이 좀 복잡하네요..)
구현하려면 어떻게 해야 할까요?

kuma의 이미지

Mutex 를 Processor 기동시 Locking 하여 일정 시간내 걸리지 않으면 이미 프로세서가 동작중인걸로 판단하면 어떨런지요? 윈도에서 Processor List 구하기 귀찮아서 가끔 그렇게 사용합니다. :D

feelpassion의 이미지

기냥..ps aux 치면 프로세스 다 나오고
kill -9 pid 하면 프로세스 종료...
kill -1 pid 하면 프로세스 시작...

원하던 대답이 이거 맞나요?

남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.

Seven..의 이미지

B라는 프로세스에서
A의 실행여부를 아는 방법이요..

mutex에서 locking 이라.. 잘 감이 안오네요;;

두대가 동시에 실행할때는 뮤텍스나 세마포어를 사용하면 되겠는데;;

흐음 실행중은 뮤텍스로어떻게 알 수 있죠? ㅠ.ㅜ

VENI VIDI VICI

aniseeker의 이미지

/proc/에서 프로세스 정보를 읽어 들여서 해당 프로그램이 동작 중인가를 확인할 수 있습니다.
더 간단하게는 ps 명령과 파이프를 사용하면 됩니다.

어두운 밤에 움직이지 않는 꽃과 개와 물,
어두운 밤에 꽃과 짖는개와 물.

kuma의 이미지

일단 A Processor 가 뜨면서 무조건 Mutex Lock 을 건다고 생각을 하죠

그리고 A Processor 는 절대 이 Lock 을 풀지 않습니다.

Processor 가 종료하면 A Processor 가 잡고있던 Mutex 는 시스템이 풀어 줍니다.

그럼 B Processor 의 입장에서는 가끔 이 Lock 이 가능한지만 Check 하시면 됩니다.

Lock 이 성공하면 A Processor 가 죽은것으로 판단하고, Lock 이 실패하면 A Processor 는 동작 중인거죠.

단지 꽁수입니다. :D

wafe의 이미지

보통 /var/run/ 에 xxx.pid 파일을 만들어서 pid를 기록해놓고 이 파일이 있으면 pid와 같은 프로세스가 실행중인지 검사해보는 방법을 쓰지 않나요?

Heejoon Lee

iamslash의 이미지

저는 socket 하나를 씁니다.
프로그램이 시작할때 특정 port 로 bind를 해봐서 성공하면
이후 과정을 수행합니다.
그렇게 되면 중복 수행될때 두번째 이후 프로그램은
bind 가 실패되서 수행이 안되죠

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.