clone의 agument중 void* stack에 관하여 ...

hogi2271의 이미지

페도라 5에서 프로젝트를 진행중입니다..
fork()를 사용하여 작업을 진행하였으나 이런저런 이유로 인해 clone을 사용하여야 할것 같습니다.
clone이라는것을 듣기는 많이 들었는데 사용해본적이 없어 좀 생소하네요..

int clone(void *(*fn)(void *arg),void *stack, int flag, void *arg);

stack이라는것이 man page에서 보면 fn에서 사용될 stack이라고 나와있습니다. 크기를 얼마나 줘야 될지 몰라 NULL을 주면 커널이 적당이 알아서 만들어 줄것 같았는데.. clone이 -1을 리턴하는 군요..

그래서 적당한 크기(malloc으로 heap에 만듬)를 만들고 넣어 주니 어느정도 생각되로 프로그램이 돌아갑니다.

1번째궁금증..
stack의 적당한 크기를 얼마나 잡아 줘야 되는냐입니다... fork를 사용할였을때나 pthred_creat를 사용할때는 stack의 크기는 전혀 신경을 안쎳는데.. 조금 낯설군요..

그리고 fn에서 exeve()함수를 불러 자식(clone을 통하여 만들어진 쓰레드)프로세스를 다른 프로그램으로 교체를 할려고 합니다.

2번째궁금증..
그럼 stack이라는 공간은 exeve()를 통해 변경된 프로세스 이미지에도 사용되는냐는 것입니다. 그것이 아니라 새롭게 프로세스 이미지가 교체되면서 stack공간이 생겨난다면 stack이라는 공간은 free시켜줘야 되는것이 아닌지요..(왠지.. 당연히 프로세스 이미지에 맞는 새로운 메모리가 할당될것같습니다.)

3번째궁금증..
커널 2.6부터는 fork가 clone을 호출한다는것을 들어 알고는 있습니다. 커널 소스를 통하여 눈으로 확인하고 싶은데 아직 커널소스를 보는것이 익숙치가 않아서 그부분을 찾지 못하였습니다. 어느 위치에서 볼수 있는지..

clone에대해 책이나 웹페이가 있으면 좀 가르쳐 주세요...
그럼이만.. 아직 beginning이라서 모르는것이많습니다.. 고수님들 조언좀.. ^^a

댓글 달기

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