프로세스 수행도중 다른 프로세스를 시동걸고 싶은데요.

ututlinux의 이미지

먼저 메인 프로세스가 돌고 있습니다.
이상황에서 다른 실행화일을 실행시키고 싶습니다.

system함수를 사용해보았지만.

이미 프로세스로 돌고 있는 상황에서 system함수를 호출을 해보니...
원래 돌던 프로세스가 좀비가 되버리더군요.

아무래도 fork, exec를 써도 비슷한 상황이 생길거 같습니다.

그림으로 대충 표현하자면

무슨 방법 없는지 모르겠습니다.

여러 고수님들의 고견 부탁드립니다.

익명 사용자의 이미지

거의 답을 찾으셨는데요.

fork_and_exec(exec할 파일명)
{
    fork();
    if (포크실패)
         처리;
    if( 부모) {
        원래하던일하러 리턴; 
        또는, exec할 프로세스가 끝날때까지 대기하고 리턴
    }
    else(자식) {
         exec(파라메터로 받은 실행파일명);
         리턴;//여기 오지 못함, exec수행 순간에 그 다음줄부터는 동작않음, 당연히 돌아오지 못하는 강으로 떠났음, 즉, 이제 더이상은 이 프로그램이 아니라, 파라메터로 받은 실행파일명임
    }  
}

또는 위 이름(fork_and_exec)으로 검색하면 실제 소스도 만만치않게 나올텐데....
nthroot의 이미지

wait(), waitpid() 에 대해서 보세요.

좀비가 생겼다는건 프로세스가 끝나고 wait를 안해줬기 때문이거든요.
fork, exec, wait 면 해결될 문제입니다.

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

bw001730의 이미지

질문을 하기 위해 그림까지 그리시구
저 정도 성의가 있다면
무얼 하든지 잘 하실것 같군요

숙제좀 해주세요 이런 질문과는 무척 대조적이군요

님께서 그린 그림을 보고
저도 더 열심히 노력해야겟다는 생각을 하게 되었습니다.
감사합니다.

IsExist의 이미지

signal (SIGCHLD, SIG_IGN);

fork 전에 위 함수를 사용하세요. 아니면 SIG_IGN 대선 직접 작성한 핸들러 함수를 넣어도 됩니다.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

ututlinux의 이미지

wait함수를 써보고 싶어도
일단 프로세스 2번이 끝날 거라는 것을 염두에 두지 않나요?
근데요.
프로세스2는 프로세스1과 같이 계속 돌아야 하거든요.
fork_and_exec ...
키워드를 몰랐네요. 함 써봐야겠습니다 ^^

살리는 것도 문제지만 프로세스2를 통해 죽이는 것도 문제입니다.

signal함수를 쓰면 그것도 가능하겠지요?

글고 bw001730님.. 넹 우리 열심히 하자구요~ ^^

댓글 달기

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