시스템 호출 소스 코드

시스템 호출 소스 코드

C 라이브러리는 C 프로그램에서 시스템 호출을 수행하는 데 사용할 수 있는 write(), read(), open() 및 기타 함수를 제공합니다. 이러한 함수의 소스 코드는 어디서 찾을 수 있나요?

답변1

이는 커널에 의해 구현되는 시스템 호출입니다. 및 에서 찾을 수 있습니다 read. 아래와 같이 버전을 호출하는 것이 전부입니다.writefs/read_write.creadwriteksysksys_readksys_write

SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
{
    return ksys_read(fd, buf, count);
}
ssize_t ksys_read(unsigned int fd, char __user *buf, size_t count)
{
    struct fd f = fdget_pos(fd);
    // ...
}

fs/read_write.c

답변2

최근 lwn 기사에는 커널 측 시스템 호출에 대한 심층적이고 자세한 설명이 있습니다.http://lwn.net/Articles/604287/.

답변3

표준 C 라이브러리의 소스 코드를 원하시면 @goldilocks에서 제공하는 링크를 확인하세요.

리눅스 시스템콜의 ​​소스코드를 알고 싶다면 리눅스 소스코드를 검색해야 합니다. 시스템 호출은 Linux 소스 코드의 여러 위치에 정의되어 있습니다. grep을 사용하여 문자열 매크로를 찾을 수 있습니다 SYSCALL_DEFINE.

grep -r -n SYSCALL_DEFINE /path/to/linux_source

그들 중 일부는 당신이 볼 수 있습니다여기.

답변4

GNU의 libc 후에는 다른 libc 구현의 소스 코드를 볼 수 있습니다.

무실탐색을 위한 온라인 소스 코드가 있습니다. 대부분의 시스템 호출은여기 있어요.

누군가 놓아줬어Libc를 github로 포팅합니다. 그러나 이는 비공식적인 것으로 간주됩니다.

관련 정보