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

- 28-

SIGSYS

Đối số không đúng cho hệ thống gọi.

SIGPIPE

Viết trên một ống dẫn không mở để đọc.

SIGALRM

Phát ra khi đồng hồ của một tiến trình ngừng lại. Đồng hồ được hoạt động
bằng lệnh alrm().

SIGTERM

Được phát ra khi một tiến trình kết thúc bình thường. Cũng có thể dùng để
dừng 1 hệ thống để kết thúc tất cả các tiến trình hoạt động.

8.1.4. Liên

lạc giữa hai tiến trình

Từ một chương trình đơn giản dưới đây sử dụng các lệnh phát và nhận tín hiệu, sau

đó giúp liên lạc giữa hai tiến trình.

Nội dung của ví dụ là sự liên lạc giữa một tiến trình cha và một tiến trình con thông

qua các tín hiệu đã được trình bày phần trước.

#include

<errno. h>

#include

<signal. h>

void fils_atc()
{

printf(" Tien trinh bi loai bo !!!\n");
kill(getpid(), SIGINT);

}
/***********************************/

void fils()
{

signal(SIGUSR1, fils_atc);
printf(" Hinh thanh tien trinh moi. Nhung chuan bi loai bo tien trinh nay !!\n");

while(1);
}

/******************************/
main()

{
int ppid, pid;


if ((pid = fork())==0) fils();

else
{

sleep(3);
printf(" Chap nhan !! Tien trinh se bi loai bo.\n");

kill(pid, SIGUSR1);
}

}

Trong ví dụ trên, tiến trình con có sử dụng hàm signal(SIGUSR1, fils_atc). Hàm

này có tác dụng mỗi khi tiến trình con nhận được tín hiệu SIGUSR1 thì hàm fils_atc()
sẽ được thực thi.

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.