wait()사용 할때 자식 프로세스 종료 인자값을 포인터로 받나요?

haedong의 이미지

pid_t wait(&status)

위 문장에서
왜 인자값을 포인터로 받는거죠?

-자식 프로세스가 exit(n);을 실행 했을때 부모 프로세스에게 전달되는 실제 값은 n의 하위 1바이트 뿐이다.
-자식 플세스가 전달한 1바이트 값은 부모 프로세스 쪽의 status 변수의 하위 두번째 바이트에 저장된다.

당췌 이해가 안되네요...
시험공부한답시고 안자서 머리에 안들어오는 건가요...

왜 그냥 값을 받지 않고 주소를 받는 걸까요?

추가>>
exit(n)에서 반환되는 값이 어떠한 값이라도
전달되는 값은 마지막 1바이트이니 그것을 명시하는거라고 이해하면 되는건가요?

arongdari의 이미지

wait() 시스템 콜은 종료된 자식의 pid만 리턴합니다.

이 리턴 값으로 부모 프로세스로서는 자식이 종료 된 것만 확인할 수 있고

정상종료 되었는지 아닌지 그 종료 상태를 알수가 없기 때문에

자식이 종료됐을때 종료 상태를 status에 넘겨 받게 되는거죠.

즉 wait 시스템콜은 status의 주소를 넘겨 받아서 거기에 자식 프로세스의 종료상태를 기록해주는거구요

이렇게 하면 부모 프로세스는 자식이 종료 될때 상태를 알 수 있게되죠

orangecrs의 이미지

이런종류의 시스템 콜이나 status를 넘겨 받을때는 value보다 주소를 참고하는 경우가 대부분입니다. 변수 선언때부터 포인터로 지정하거나 롱다님께서 말씀하신 것처럼 pid를 리턴할때 그게 포인터로 지정되있기 때문이기도 합니다. 일일이 커널분석이 힘들기에 그냥 이건 이렇구나 라고 생각하시고 기억해두시면 됩니다.

---------------------------------------------------
야!...

alwaysN00b의 이미지

제가 생각하기에.. 질문하신분 의도가

int foo1(int a){
     a = 20;
     return 0;
}
int main(int argc,char *argv[]){
    int a=10;
    foo1(a);
    printf(" a : %d\n", a);
 
    return 0;
}
결과 
a : 10


int foo1(int *a){
     *a = 20;
     return 0;
}
int main(int argc,char *argv[]){
    int a=10;
    foo1(&a);
    printf(" a : %d\n", a);
 
    return 0;
}
결과 
a : 20

답이 될것 같습니다.
Quote:
왜 그냥 값을 받지 않고 주소를 받는 걸까요?

라는 문구때문에 이렇게 생각했습니다.

아니라면 죄송합니다.

언제나 시작

댓글 달기

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