| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- Git
- AZRUE
- g++
- SSH 에러
- Go
- Child
- 소스트리
- ubuntu20.04
- gcc
- ssh
- MAN
- system programming
- 커널
- linux
- repo
- 시스템콜
- bash
- netstat
- system call
- Parent
- NXP
- ubuntu
- sudo
- APT
- 상대경로
- dash
- yocto
- Docker
- vm
- strace
- Today
- Total
devsojang 님의 블로그
System Call 확인하기 (feat. strace) 본문
2025.01.18 - [Linux] - System Call 이란 ?
System Call 이란 ?
System Call프로세스가 커널에 처리를 요청하는 방법입니다.사용자모드에서 실행중인 프로세스가 시스템 콜을 호출하면 CPU에서 예외(exception)가 발생되고 CPU 모드가 사용자 모드에서 커널모드로
devsojang.tistory.com
Linux 시스템 상에서 프로세스가 어떤 System Call을 호출하는지 strace 명령어를 통해서 확인할 수 있습니다.
devsojang.go 파일을 사용해서 테스트 해보도록 하겠습니다.
package main
import (
"fmt"
)
fun main() {
fmt.Println(" devsojang ~ !!")
}
빌드를 합니다.
$ go build devsojang.go
$ ./devsojang
devsojang ~ !!
strace 명령어를 사용해서 어떤 System Call을 호출하는지 확인해 보겠습니다.
$ strace -o devsojang.log ./devsojang
devsojang.log 파일을 열어보면 write() 함수로 System Call이 사용된 것을 확인할 수 있습니다.
$ cat devsojang.log
Go 언어 뿐만 아니라 어떤 프로그래밍 언어를 사용해도 프로그램은 커널에 처리를 요청하려면 System Call을 사용합니다.
이번에는 스크립트 언어인 Python을 이용해서 System Call을 확인해 보겠습니다.
devsojang.py 파일을 사용해서 테스트 해보도록 하겠습니다.
#!/usr/bin/python3
print(" devsojang ~ !!")
strace를 실행해 봅니다.
$ strace -o devsojang.py.log ./devsojang.py
devsojang.py.log 파일에도 동일하게 write() 함수로 System Call이 사용된 것을 확인할 수가 있습니다.
$ cat devsojang.py.log
실습을 통해서 System Call에 대해서 한걸음 더 가까워진 것 같습니다.
유저모드와 커널모들를 연결시켜주는 System Call 꼭 기억해 주시길 바랍니다.

'Linux' 카테고리의 다른 글
| [ System Programming ] fork 함수 (0) | 2025.03.19 |
|---|---|
| gcc/g++10 설치 (feat. ubuntu 20.04) (0) | 2025.02.28 |
| ssh 설치 및 해결책들 (0) | 2025.02.19 |
| root 계정 활성화 (0) | 2025.01.22 |
| System Call 이란 ? (0) | 2025.01.18 |