Hệ điều hành Linux - Bài 4: Giao tiếp giữa các tiến trình trên Linux

Nội dung của tài liệu trình bày về khái quát về một số cơ chế giao tiếp giữa các tiến trình, xử lý tín hiệu, khái niệm về xử lý tín hiệu, gởi tín hiệu đến tiến trình từ bàn phím và từ dòng lệnh, đón bắt xử lý tín hiệu, bộ xử lý tín hiệu mặc định, cài đặt bộ xử lý tín hiệu, đường ống, khái niệm về đường ống, tạo đường ống, đường ống hai chiều, đường ống có đặt tên và một số bài tập thực hành về giao tiếp giữa các tiến trình trên Linux. | BÀI 4 GIAO TIẾP GIỮA CÁC TIẾN TRÌNH TRONG LINUX I. Khái quát Linux cung cấp một số cơ chế giao tiếp giữa các tiến trình gọi là IPC (Inter-Process Communication): Trao đổi bằng tín hiệu (signals handling) Trao đổi bằng cơ chế đường ống (pipe) Trao đổi thông qua hàng đợi thông điệp (message queue) Trao đổi bằng phân đoạn nhớ chung (shared memory segment) Giao tiếp đồng bộ dùng semaphore Giao tiếp thông qua socket II. Xử lý tín hiệu (signals handling) 1. Khái niệm - Tín hiệu là các thông điệp khác nhau được gởi đến tiến trình nhằm thông báo cho tiến trình một tình huống. Mỗi tín hiệu có thể kết hợp hoặc có sẵn bộ xử lý tín hiệu (signal handler). Tín hiệu sẽ ngắt ngang quá trình xử lý của tiến trình, bắt hệ thống chuyển sang gọi bộ xử lý tín hiệu ngay tức khắc. Khi kết thúc xử lý tín hiệu, tiến trình lại tiếp tục thực thi. - Mỗi tín hiệu được định nghĩa bằng một số nguyên trong /urs/include/. Danh sách các hằng tín hiệu của hệ thống có thể xem bằng lệnh kill –l. 2. Gởi tín hiệu đến tiến trình Tiến trình có thể nhận tín hiệu từ hệ điều hành hoặc các tiến trình khác gởi đến. Các cách gởi tín hiệu đến tiến trình: a) Từ bàn phím Ctrl+C: gởi tín hiệu INT( SIGINT ) đến tiến trình, ngắt ngay tiến trình (interrupt). Ctrl+Z: gởi tín hiệu TSTP( SIGTSTP ) đến tiến trình, dừng tiến trình (suspend). Ctrl+\: gởi tín hiệu ABRT( SIGABRT ) đến tiến trình, kết thúc ngay tiến trình (abort). b) Từ dòng lệnh - Lệnh kill - Ví dụ: kill -INT 1234 dùng gởi tín hiệu INT ngắt tiến trình có PID 1234. Nếu không chỉ định tên tín hiệu, tín hiệu TERM được gởi để kết thúc tiến trình. - Lệnh fg: gởi tín hiệu CONT đến tiến trình, dùng đánh thức các tiến trình tạm dừng do tín hiệu TSTP trước đó. c) Bằng các hàm hệ thống kill(): #include #include #include pid_t my_pid = getpid() kill( my_pid, SIGSTOP ); /* macro xử lý tín hiệu và hàm kill() */ /* lấy định danh tiến trình */ /* gửi tín hiệu STOP đến tiến trình */ 3. Đón bắt xử lý tín hiệu - Một số tín hiệu hệ thống (như KILL, .

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
24    19    1    27-11-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.