특정 프로세스에서 타 프로레스 실행시에 타이머나 알람이 동작하지 않습니다.

dunpeal의 이미지

안녕하세요.
그동안 검색으로만 보다가 도저히 풀리지 않는 문제가 있어서 오늘 가입해서 처음 글 올립니다.^^

A 와 B 두개의 프로세스가 있는데요.(B 는 A 에서 최초 실행)
서로 종료 된걸 캐치하면 system 함수로 재실행해주도록 처리되어있습니다.
둘 다 알람을 이용한 타이머 처리가 되어있는데,

A 에서 B 를 실행해주면 B 에 구현되어있는 알람이 잘 동작을 하는데
B 에서 A 를 실행해주면 A 의 알람이 등록은 되는데 동작하지 않습니다.

둘의 차이점이 뭔가해서 프로세스 정보를 찍어보니

A 는 Flag 값이 4이고
B 는 Flag 값이 0이어서 이부분이 의심이 갑니다.

그런데 왜 A 와 B 의 Flag 가 다른지 모르겠고,
B 의 Flag 를 4로 어떻게 바꿔야할지도 모르겠습니다.

둘의 파일권한이나 소유자는 동일하게 되어있는데요.

그럼 의견부탁드립니다.

twinwings의 이미지

질문이 너무 두리 뭉실해서 잘 모르겠습니다.
- B는 A 에서 최초 실행이 무슨 말인지 모르겠습니다. fork() 인가요?
- 종료된걸 캐치 한다니, SIG** 을 이용하는 건가요?

부모-자식관계는 당연히 비 대칭관계라서, wait() 군의 함수들은 "부모"가 "자식"을 기다리지 반대는 안됩니다.(아마도)

man wait wrote:

...
...

All of these system calls are used to wait for state changes in a child
of the calling process, and obtain information about the child whose
state has changed.

...
...


저라면 제 3의 프로세스 C에게 A,B를 등록하고,

C에서 감지하게 되면(파이프로 구현해서 파이프가 깨지면 호출되는 식으로. select()등으로 판별 가능하겠죠)

A,B를 다시 실행하도록 하겠습니다.

dunpeal의 이미지

fork() 는 아니구요.

B 가 제 3의 프로세스인데
A가 실행되고 나서 A 코드내에서 B 를 실행해줍니다.

B 에서 A 가 종료되었는지여부는 아래와같이 popen 으로 확인하고 있습니다.
popen("ps -ef|grep -w A |grep -v grep|awk '{print $2}'","r");

해당 값이 널이면 B 코드내에서 A 경로로 A 를 실행을 해줍니다.
이경우 A 의 타이머가 미동작합니다.

dunpeal의 이미지

B를 A 코드 내에서 실행하지 않고,
A 실행하듯이 .sh 파일내에서 A 실행할때 같이 B 도 실행해주니 문제는 해소가 되었습니다.

한가지 의문점은 여전히 남네요.
코드내에서 실행해준 프로세스에서 다른 프로세스를 실행시켜주면 타이머가 안도는 원인은 여전히 궁금하군요.

댓글 달기

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