Chương 6. Linux System Calls<br />
Phạm Quang Dũng<br />
http://fita.hua.edu.vn/pqdung<br />
<br />
Các nhóm hàm<br />
Các hàm liên quan đến hệ thống được chia thành 2<br />
nhóm dựa vào cách chúng được thực thi:<br />
<br />
<br />
Hàm thư viện: là hàm bình thường đặt trong thư viện bên<br />
ngoài chương trình. Các tham số được đặt trong các<br />
thanh ghi của CPU hoặc trên stack. Sự thực hiện được<br />
truyền đến đoạn mã đầu của hàm (thường trong thư viện<br />
chia sẻ được nạp)<br />
<br />
<br />
<br />
System call: được thực thi trong Linux kernel. Các tham<br />
số được chuyển đến và xử lý trong kernel đến khi lời gọi<br />
kết thúc.<br />
2<br />
<br />
<br />
<br />
Linux cung cấp khoảng 200 system call. Một số được<br />
sử dụng cho chính hệ thống, số còn lại được sử<br />
dụng chỉ trong việc thực thi các hàm thư viện đặc biệt<br />
<br />
<br />
<br />
Liệt kê trong /usr/include/asm/unistd.h<br />
<br />
<br />
<br />
Hầu hết các system call được khai báo trong<br />
<br />
<br />
3<br />
<br />
6.1. Sử dụng strace<br />
<br />
<br />
Lệnh strace theo dõi sự thực hiện của một chương<br />
trình khác, liệt kê bất cứ system call nào chương<br />
trình gọi và bất kỳ signal nào nó nhận được.<br />
<br />
<br />
<br />
% strace tên_CT [các_tham_số]<br />
<br />
<br />
<br />
Vd: % strace hostname<br />
<br />
4<br />
<br />
6.2. access: kiểm tra quyền truy nhập file<br />
<br />
<br />
system call access xác định xem tiến trình gọi có<br />
quyền truy nhập file hay không.<br />
<br />
<br />
<br />
access(ts1, ts2)<br />
<br />
<br />
<br />
<br />
<br />
ts1: đường dẫn tới file<br />
ts2: chuỗi bit hoặc F_OK, R_OK, W_OK, X_OK<br />
<br />
Giá trị trả về:<br />
<br />
<br />
= 0 nếu tiến trình có các quyền trong ts2<br />
<br />
<br />
<br />
= -1 nếu có lỗi, mã lỗi được thiết lập thích hợp là<br />
<br />
<br />
ENOENT (file không tồn tại)<br />
<br />
<br />
<br />
EACCES (không có quyền tới file hoặc thư mục chứa file)<br />
<br />
<br />
<br />
EROFS (khi yêu cầu ghi lên file có thuộc tính chỉ đọc)<br />
5<br />
<br />