Hướng dẫn abrt la gi trong linux - abrt la gi trong linux
Mở đầuChào các bạn, ở bài viết trước, mình đã giới thiệu đến các bạn tiến trình (process) cũng như những kỹ thuật cơ bản để Quản lý các tiến trình (process) trên hệ hiều hành Unix/Linux. Vậy thì, các tiến trình trên nguyên tắc là hoàn toàn độc lập, nhưng thực tế có thể như thế không ? Một chương trình của chúng ta nếu mở rộng dần ra, sẽ có lúc cần phải tách ra thành nhiều tiến trình để xử lý những công việc độc lập với nhau. Các lệnh của Linux thực tế là những lệnh riêng lẻ có khả năng kết hợp và truyền dữ liệu cho nhau thông qua các cơ chế giao tiếp giữa các tiến trình. Trong loạt bài tiếp theo này chúng ta sẽ tìm hiểu các cơ chế hỗ trợ việc liên lạc này cũng như những vấn đề đặt ra khi các tiến trình trao đổi thông tin với nhau. Show 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):
Signals handlingKhái niệm
Ngoài ra, khi thực hiện lệnh Gửi tín hiệu đến tiến trình1. Các nguồn gửi signals:
2. Các cách gửi tín hiệu đến tiến trình:
Nhận và xử lý tín hiệu:1. Khi một tiến trình nhận một tín hiệu, nó có thể xử sự theo một trong các cách sau :
2. Bộ xử lý tín hiệu mặc địnhHệ thống đã dành sẵn các hàm mặc định xử lý tín hiệu cho mỗi tiến trình. Ví dụ:
3. Cài đặt bộ xử lý tín hiệu :Có nhiều cách thiết lập bộ xử lý tín hiệu (signal handler) thay cho bộ xử lý tín hiệu mặc định. Một cách cơ bản nhất đó là ta sẽ gọi hàm signal() hoặc sigaction(). Ví dụ:
Bộ xử lý mặc định cho tín hiệu TERM gọi là hàm exit() - chấm dứt tiến trình hiện hành.SIG_IGN (Bỏ qua tín hiệu), SIG_DFL (Đặt tín hiệu trở lại cơ chế mặc định) hoặc bộ xử lý do người dùng xây dựng hay là 1 function address. Bộ xử lý dành cho tín hiệu ABRT là gọi hàm hệ thống abort() để tạo ra file core lưu xuống thư mục hiện hành và thoát chương trình.
Mặc dù vậy đối với một số tín hiệu bạn có thể cài đặt hàm thay thế bộ xử lý tín hiệu mặc định của hệ thống.3. Cài đặt bộ xử lý tín hiệu :
2. Tạo đường ống
Ví dụ: thực hiện lệnh 3. Lệnh này chuyển đầu ra từ lệnh ls liệt kê các tệp của thư mục vào đầu vào của lệnh pr để phân trang chúng. Cuối cùng đầu ra từ lệnh pr được đưa vào đầu vào của lệnh lpr để in kết quả trên máy in mặc định.
3. Đường ống hai chiềuMột số hệ điều hành cho phép thiết lập hai pipe giữa một cặp tiến trình để tạo liên lạc hai chiều. Trong những hệ thống đó, có nguy cơ xảy ra tình trạng tắc nghẽn (deadlock) : một pipe bị giới hạn về kích thước, do vậy nếu cả hai pipe nối kết hai tiến trình đều đầy(hoặc đều trống) và cả hai tiến trình đều muốn ghi (hay đọc) dữ liệu vào pipe(mỗi tiến trình ghi dữ liệu vào một pipe), chúng sẽ cùng bị khóa và chờ lẫn nhau mãi mãi ! Tạm kếtTrên đây, mình vừa giới thiệu đến các bạn 2 cơ chế giao tiếp giữa các tiến trình là Tín hiệu (Signals) và Đường ống (Pipe). Ở các bài viết tiếp theo, chúng ta sẽ cùng nhau tìm hiểu về các cơ chế giao tiếp còn lại nhé )) ))Cảm ơn các bạn đã theo dõi bài viết của mình |