inflearn logo
강의

講義

知識共有

Linuxシステムプログラミング - 理論と実践

Directoryを扱う

system call

解決済みの質問

598

lalala

投稿した質問数 5

0

file lowlevel 부분에서 나온 함수들만 systemcall이고 file advanced 수업에서 소개되는 api들은 아닌거 맞나요?

linux

回答 1

0

learnit

안녕하세요 lalala님

엄격한 기준으로 말씀드리자면 강좌에서 사용한 모든 함수는 system call(syscall)이 아닙니다. 일반적으로 syscall은 user level application에서 직접 호출하지 않습니다. 대신 user level application에서 syscall 호출이 필요한 경우 syscall을 호출하도록 구현된 wrapper function을 호출하게 되죠. 이 wrapper function들은 libc(linux에서는 보통 glibc)에 구현되어 있는 것을 사용하게 됩니다. 결국, glibc에 구현된 syscall wrapper function을 호출함으로써 syscall을 호출하는 것입니다. 완화된 기준으로 보자면 우리 코드에서 syscall을 간접적으로 사용했다고 할 수 있는 것이죠.

glibc에서 제공하는 함수들이 어떤 syscall을 사용했는지 유추는 가능하지만 정확하게 알기위해서는 glibc 소스 코드를 봐야하겠죠. 하지만 이것은 쉬운 일은 아닙니다. glibc 소스 코드가 보기 쉽게 작성된 코드가 아니어서요..; 그나마 쉽게 확인할 수 있는 방법은 man page에서 어떤 함수에 대해 찾을 때 그 함수가 어떤 섹션인지 확인하는 것입니다. 그 함수가 section 2에 있으면 syscall wrapper function이라고 판단할 수 있겠습니다. syscall에 대한 man page를 보시면 syscall wrapper function 목록이 나와있습니다.(https://man7.org/linux/man-pages/man2/syscalls.2.html)

그렇다고 section 2에 있지 않은 함수들은 syscall을 사용하지 않을까요? 그렇지 않을껍니다. 예를 들어 fopen의 경우 section 3에 포함되는 함수입니다. 아마도 내부적으로 open 등의 syscall을 사용하고 있겠죠.

section 2든 3이든 우리는 glibc에 구현된 함수를 호출하는데요, glibc라는 라이브러리에서 제공하는 함수를 호출한다고 볼 수 있죠. 이렇게 외부에서 호출할 수 있는 함수를 우리는 API라고 부르죠. 우리가 호출하는 glibc 함수들은 모두 API 함수라고 볼 수 있습니다.

답변이 길어졌네요. 설명이 좀 장황한 것 같긴한데요.. 잘 이해하셨길 바라겠습니다. :)

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

37

2

select API 실습 코드 질문

0

40

2

wsl에서 fcntl사용

0

72

2

inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...

0

179

2

./stat 파일이름

0

273

2

fopen r, r+모드 차이

0

460

2

강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?

0

326

1

pthread 질문

0

419

2

I/O Multiplexing(select) 질문

0

325

1

inotify.c. ret 질문

0

302

1

inotify.c 질의합니다.

1

317

1

child process

0

715

1

read/blocking

0

564

1

flock

0

565

1

pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?

0

487

1

fork() 함수 사용시 결과 관련 질문

0

371

1

exec 관련 궁금한 사항

0

450

2

파일 디스크립터와 FILE 구조체에 대한 질문

0

552

1

buf 선언에 따른 read() fail 문제

0

251

2

파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문

0

254

1

2번 multi thread 방법 질문

0

242

1

segmentation fault 발생 관련 문의

1

842

1

라이브 코딩 실습 코드

0

235

1

화면이 짤려요

0

549

4