리눅스 프로세스 그룹에 대해서 문의드립니다.

jyhme의 이미지

안녕하세요. 리눅스 시스템 프로그래밍을 하다가 궁금한 것이 생겨서 문의드려봅니다.

1. 최초에 A라는 프로세스가 그룹을 생성합니다.
그러면
프로세스 그룹 id : A
그룹 리더 : A
그룹 원 : {A}

가 될 것입니다.

2. 여기서 B, C가 이 프로세스 그룹에 합류합니다.

프로세스 그룹 id : A
그룹 리더 : A
그룹 원 : {A,B,C}

가 됩니다.

3. A가 문제가 생겨서(종료되거나 이동) 이 그룹에서 나가게 된다면

프로세스 그룹 id : A
그룹 리더 : ???
그룹 원 : {B,C}

가 됩니다.

Q. 여기서 궁금한게 리눅스 함수를 찾아봐도 그룹 리더의 pid가 무엇인지 알아내는 함수가 없는 것
같더라구요. 어떻게 구해야하는 지, 혹은 왜 없는 지에 대해서 알고 싶습니다.

감사합니다! 좋은 하루 되세요.

익명 사용자의 이미지

#include <unistd.h>
 
       int setpgid(pid_t pid, pid_t pgid);
       pid_t getpgid(pid_t pid);
 
       pid_t getpgrp(void);                 /* POSIX.1 version */
       pid_t getpgrp(pid_t pid);            /* BSD version */
 
       int setpgrp(void);                   /* System V version */
       int setpgrp(pid_t pid, pid_t pgid);  /* BSD version */

jyhme의 이미지

답변 감사드립니다. 하지만 제가 원하는 건 process group id가 아니라
process group leader id입니다. 결국엔 process group id가 아니라 process id이죠.

이전에 리더가 있었으니 리더가 사라지면 다른 프로세스가 대체할 거라고 생각했는데
왠지 공부해볼 수록 그건 아니란 기분이 드네요.

익명 사용자의 이미지

Process group ID and session ID 부분 설명을 보면

The process whose process ID is the same as its process group ID 
is the process group leader for that group.

라고 되어있습니다. 이거면 getpgid()의 리턴 타입이 왜 pid_t인지도 설명이 될 것 같은데 그래도 이상한 게 있나요?

jyhme의 이미지

뭔가 제가 설명이 부족했던 것 같네요.

저는 Process group을 만들었던 leader가 프로세스 그룹에서 사라졌을 경우에
다음 리더가 누구인지를 알고 싶습니다.

익명 사용자의 이미지

저도 잘 알아보지 않고 댓글을 달았던 것 같네요.
좀 찾아봤는데 리더가 사라지면 그 프로세스 그룹은 리더가 없는 상태가 되는 듯 합니다.

http://www.win.tue.nl/~aeb/linux/lk/lk-10.html

Quote:

Orphaned process groups

The process group leader is the first member of the process group. It may terminate before the others, and then the process group is without leader.

댓글 달기

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