GIÁO TRÌNH HỆ ĐIỀU HÀNH UNIX - LINUX - Trang 151

1
5

máy trạm (pseudoterminal), cổng máy in, bảng mạch âm thanh, và chuột được quản
lý như các thiết bị đặc biệt giống như các tệp thông thường để lập trình ứng dụng.
Các socket TCP/IP và miền, khi kết nối được thiết lập, sử dụng mô tả file như thể
chúng là các file chuẩn. Các ống (pipe) cũng tương tự các file chuẩn.

Một mô tả file đơn giản chỉ là một số nguyên được sử dụng như chỉ mục (index)

vào một bảng các file mở liên kết với từng tiến trình. Các giá trị 0, 1 và 2 liên quan
đến các dòng (streams) vào ra chuẩn: stdin, stderr stdout; ba dòng đó thường kết
nối với máy của người sử dụng và có thể được chuyển tiếp (redirect).

Một số lời gọi hệ thống sử dụng mô tả file. Hầu hết các lời gọi đó trả về giá trị -1

khi có lỗi xảy ra và biến errno ghi mã lỗi. Mã lỗi được ghi trong trang chính tuỳ
theo từng lời gọi hệ thống. Hàm perror() được sử dụng để hiển thị nội dung thông
báo lỗi dựa trên mã lỗi.

Hàm open()

Lời gọi open() sử dụng để mở một file. Khuôn mẫu của hàm và giải thích tham

số và cờ của nó được cho dưới đây:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

Đối số pathname là một xâu chỉ ra đường dẫn đến file sẽ được mở. Thông số

thứ ba xác định chế độ của file Unix (các bit được phép) được sử dụng khi tạo một
file và nên được sử dụng khi tạo một file . Tham số flags nhận một trong các giá trị
O_RDONLY, O_WRONLY hoặc O_RDWR

C

Chú gii

O_RDONLY
O_WRONLY
O_RDWR
O_CREAT
O_EXCL
O_NOCTTY

O_TRUNC
O_APPEND
O_NONBLOCK

O_NODELAY
O_SYNC

Mở file để đọc
Mở file để ghi
Mở file để đọc và ghi
Tạo file nếu chưa tồn tại file đó
Thất bại nếu file đã có
Không điều khiển tty nếu tty đã mở và tiến trình không điều khiển tty
Cắt file nếu nó tồn tại
Nối thêm và con trỏ đặt ở cuối file
Nếu một quá trình không thể hoàn thành mà không có trễ, trả về trạng
thái trước đó
Tương tự O_NONBLOCK
Thao tác sẽ không trả về cho đến khi dữ liệu được ghi vào đĩa hoặc thiết
bị khác

Các giá tr c ca hàm open()