[질문] 데몬 작성 문제점

uathebest의 이미지

OS : 한컴3.1
커널 2.4.20-8

내용 정리)

데몬 하나는 .c로 만들었고, 그 .c에서 while로 무한반복하면서 쉘코드를 반복 실행합니다. (여기서 쉘코드는 특정 데몬이 죽었을 때 다시 띄우는 동작과 파일 체크하여 파일 값에 따르는 동작을 합니다)

질문)
.c로 만든 데몬을 부팅과 동시에 수행일 시켰을 경우,
그 데몬은 동작하기는 하나. 파일 값 체크를 못하며 죽였다가 살리는 동작 또한 수행하지 못합니다.
그러나,
부팅과 동시에 데몬을 수행하지 않고, 부팅이 완료 된후, 로그인 과정을 거쳐서 데몬을 터미널에서 수행하면, 아주 잘 동작 한다는 겁니다.
이 두개의 차이점을 도저히 알 길이 없습니다.. 정말 답답해서 ㅡㅡ+ 조언 부탁드립니다..

익명 사용자의 이미지

데몬코드를 올려보세요.

ssehoony의 이미지

path 문제 같군요.

데몬의 실행 위치나 쉘환경변수인 path 의 문제이거나

uathebest의 이미지

답변 감사합니다 꾸벅(__)

# .c코드에서 반복적으로 호출하는 쉘코드 입니다
#!/bin/bash

#
# Hancom 3.1
# Linux localhost.localdomain 2.4.20-8 #1  Tue April 16 22:44:09 KST
# 2003 i686 i686 i386 GNU/Linux
#

# program은 계속적으로 존재하기 원하는 
code=./program

string=`ps x | awk '{print $5}' | grep -e ".pro*"`

# daemon check
# program데몬이 죽었으면 다시 살린다.
if [ "$string" != "$code" ]; then
	/usr/bin/startProgram
	#이것은 program을 &로 돌리는 쉘코드 입니다
	# startProgram 내용 아래 참조
	#
	# cd /data
	# ./program &
	#
fi

# set_value파일을 읽어온다 (1자리 숫자 값이 들어감)
file_check=`cat set_value`

# reboot
if [ "$file_check" = "2" ]; then
	echo 0 > set_value
	reboot
# network restart
elif [ "$file_check" = "3" ]; then
	echo 0 > set_value
	/etc/init.d/network restart
fi

program (계속 존재하기 원하는 프로그램)과 데몬프로그램은 다른 경로에 위치해 있으며,
root권한으로 실행하며, program은 각종 라이브러리와 드라이버 모듈 사용함.

데몬의 경우 실행할 때 모두 {경로이동 후(cd), ./프로그램 } 이런식으로 했습니다.
runlevel 3에서 실행하였으므로, rc3.d에 init.d의 실행파일을 링크 걸어서 했습니다.

데몬을 실행하는데 있어서, 또는 모듈과 데몬 프로그램 관계에 있어서
로그인 전과 로그인 후의 차이점 이라면 어떤게 있을까요?
느낌으로는 로그인 전과 후의 차이점이 뭔가가 있는 것 같은데.. :?

추가 질문.. :lol: 데몬에서 PPID 1가지고 도는데 sleep을 추가하니 무시되는것 같습니다.
이것 또한 의문이... :?

You are the best!

mithrandir의 이미지

데몬의 소스코드도 봐야할 것 같군요.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

댓글 달기

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