CÁC BÀI THỰC HÀNH LINUX - Trang 27

- 26-

Bài 8

QUẢN LÝ TIẾN TRÌNH

8.1. Giới thiệu

Tiến trình là một môi trường thực hiện, bao gồm một phân đoạn lệnh và một phân

đoạn dữ liệu. Cần phân biệt với khái niệm chương trình chỉ gồm tập hợp lệnh.

Trên hệ điều hành Linux, tiến trình được nhận biết thông qua số hiệu của tiến trình,

gọi là pid. Cũng như đối với user, nó có thể nằm trong nhóm. Vì thế để phân biệt ta
nhận biết qua số hiệu nhóm gọi là pgrp. Một số hàm của C cho phép lấy được những
thông số này:

int

getpid()

/* trả về giá trị int là pid của tiến trình hiện tại*/

int

getppid()

/*trả về giá trị int là pid của tiến trình cha của tiến trình hiện tại */

int

getpgrp()

/* trả về giá trị int là số hiệu của nhóm tiến trình*/

int setpgrp()

/*trả về giá trị int là số hiệu nhóm tiến trình mới tạo ra*/

Ví dụ:

Lệnh

: printf("Toi la tien trinh %d thuoc nhom %d",getpid(),getgrp());


Kết quả sẽ là:

Toi là tien trinh 235 thuoc nhom 231

8.1.1. Tạo một tiến trình - lệnh fork

int fork()

tạo ra một tiến trình con. Giá trị trả lại là 0 cho tiến trình con và dấu

hiệu pid cho tiến trình cha. Giá trị sẽ là -1 nếu không tạo được tiến trình mới.

Theo nguyên tắc cơ bản của hệ thống, tiến trình con và cha sẽ có cùng đoạn mã.

Đoạn dữ liệu của tiến trình mới là một bản sao chép chính xác đoạn dữ liệu của tiến
trình cha. Tuy nhiên tiến trình con vẫn khác tiến trình cha ở pid, thời gian xử lý, ...

8.1.2. Dừng một tiến trình

Lệnh kill của Shell có thể dùng để chấm dứt hoạt động của một tiến trình. ví dụ

như khi muốn dừng tiến trình 234 ta dùng lệnh: kill 234

C cũng có lệnh kill như sau:

int

kill(pid, sig);

int pid;

là dấu hiệu nhận biết của một tiến trình.

int sig;

hằng tín hiệu giao tiếp tiến trình.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.