#include <sys/syscall.h>
#include <unistd.h>
int syscall(int number, ...);
1.2. 설명
syscall()은 시스템 호출의 어셈블리(:12) 인터페이스이다. 첫번째 인자는
시스템콜(:12) 번호이며, 그 다음으로 각 시스템콜의 인자가 입력된다.
시스템 콜 번호는 Linux 시스템콜 레퍼런스를 참고하기 바란다.
syscall()을 사용할때 시스템 콜 번호를 직접입력하는 것은 귀찮은
작업인데, 각 시스템 콜에 대해서 sys/syscall.h 에 정의되어 있으니
참고하기 바란다. SYS_systemcall식으로 정의되어
있다. 예를들어 open()시스템 호출을 사용하기 원한다면
syscall(SYS_open,...)식으로 사용하면 된다.
역사적으로 syscall()은 BSD4.0에 의해서 사용되어졌다.
1.3. 반환값
반환값은 시스템 콜의 리턴 정책에 따라서 달라진다. 일반적으로
성공했다면 0, 에러가 발생했다면 -1이 리턴된다. 에러 코드는
errno에 저장된다.
1장. syscall(2)
indirect 시스템 호출
1.1. 사용법
1.2. 설명
syscall()은 시스템 호출의 어셈블리(:12) 인터페이스이다. 첫번째 인자는 시스템콜(:12) 번호이며, 그 다음으로 각 시스템콜의 인자가 입력된다. 시스템 콜 번호는 Linux 시스템콜 레퍼런스를 참고하기 바란다. syscall()을 사용할때 시스템 콜 번호를 직접입력하는 것은 귀찮은 작업인데, 각 시스템 콜에 대해서 sys/syscall.h 에 정의되어 있으니 참고하기 바란다. SYS_systemcall식으로 정의되어 있다. 예를들어 open()시스템 호출을 사용하기 원한다면 syscall(SYS_open,...)식으로 사용하면 된다.
역사적으로 syscall()은 BSD4.0에 의해서 사용되어졌다.
1.3. 반환값
반환값은 시스템 콜의 리턴 정책에 따라서 달라진다. 일반적으로 성공했다면 0, 에러가 발생했다면 -1이 리턴된다. 에러 코드는 errno에 저장된다.
1.4. 예제
1.5. 참고문헌
Linux 시스템콜 레퍼런스
Recent Posts
Archive Posts
Tags