리눅스 시스템콜 fork() 소스는 어떻게 알수있죠?

92answn의 이미지

안녕하세요 리눅스 커널 공부를 시작한지 얼마안된 사람입니다..

다름이 아니고 프로세스를 복제시켜주는 시스템콜 fork() 를 호출하면

결국 커널에 구현되어있는 do_fork() 가 실행되는 건 알겠습니다만

do_fork() 말고 fork() 소스코드는 아무리 찾아도 안나오네요

시스템콜 정의되있는 unistd.h 파일에도 _NR_fork 라는 이해안되는 이름으로 작성되어있고..

fork() 시스템콜이 어떻게 이뤄지는건가요?

92answn의 이미지

fork() 는 라이브함수라서 소스코드를 볼수가 없는거였네요..볼수있는 방법이 있으면 알려주시면 감사하겠습니다. 시스템콜이라는게 결국 커널에 구현되어있는 함수를 호출하는 걸로 이해했었는데...라이브함수까지 포함되는거였나요?

익명 사용자의 이미지

일반적으로는 glibc에 있습니다.
오픈소스니까 가서 보세요: https://www.gnu.org/software/libc/

glibc-2.28 기준으로 아래 두 소스를 보시면 되겠습니다.
sysdeps/nptl/fork.c
sysdeps/unix/sysv/linux/arch-fork.h

shint의 이미지

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

hsnks100의 이미지

조금 활동을 쉬시는게 어떠신가요? 계속 지켜봤는데, 너무 질문과 무관한 답글을 많이 다시는 것 같습니다.

답글을 보면서 스팸같다는 생각이 자꾸 듭니다. 마치 원하는 것을 검색했는데 나오는 무의미한 검색결과처럼......

----------------------------------------------------
개인 블로그: https://kangssu.com

세벌의 이미지

저도 같은 생각입니다.

shint 님 글을 보면 사람이 쓴 글 같지 않습니다. 기계가 자동응답하는 느낌?

그러지 말라고 해도 shint 님은 다른 사람의 말은 안 듣는 듯...