Lập trình với tiến trình (Process)

Xem: 4773    Tải: 0   Thảo luận: 0   Mục: Hệ thống nhúng   Lĩnh vực: Máy tính - công nghệ

24 điểm   ( 21 đánh giá ) File đã được kiểm thử


1. Mục đích:
- Tìm hiểu về tiến trình (process) trên Linux, cơ chế giao tiếp giữa các tiến trình. Biết cách lập trình giao tiếp giữa 2 process.
2. Chuẩn bị:
- PC Linux (Ubuntu) with arm-linux-gcc- Bộ KIT thực hành FriendlyArm mini/macro2440
3. Nội dung thực hành
3.1. Tìm hiểu quản lý tiến trình trên Linux
Trên hệ điều hành Linux, tiến trình được nhận biết thông qua số hiệu (định danh) tiến trình pid.
Một tiến trình có thể nằm trong một nhóm nào đó, có thể nhậnbiết thông qua số hiệu nhóm pgrp. Một số hàm của C cho phép lấy các 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
Hiển thị thông tin tiến trình – lệnh ps
Để biết thông tin các tiến trình hiện hành ta sử dụng lệnh: ps [option]
-e: hiển thị thông tin về mỗi tiến trình.
-l: hiển thị thông tin đầy đủ tiến trình.
-f: hiển thị thông tin về tiến trình cha.
-a: hiển thị tất cả các tiến trình.
Lưu ý: dòng lệnh ps –aux: liệt kê danh sách các tiến trình đang chạy cùng các thông tin của nó như: Chủ nhân của tiến trình (owner), mã số nhận diện tiến trình (PID), thời gian hiện sử dụng CPU (%CPU), mức chiếm dụng bộ nhớ của tiến trình (%MEM), trạng thái tiến trình (STAT) và các thông tin khác.
Một số trạng thái của tiến trình thường gặp: R-đang thi hành, S-đang bị đóng, Z-ngừng thi hành, W-không đủ bộ nhớ…
Dừng một tiến trình – lệnh kill
Lệnh kill thường được sử dụng để ngừng thi hành một tiến trình.
kill [signal] <PID>
signal: là một số hay tên của tín hiệu được gởi tới tiến trình.
PID: mã số nhận diện tiến trình muốn dừng.
- Lệnh kill có thể gởi bất kỳ tín hiệu signal nào tới một tiến trình, nhưng theo mặc định nó gởi tín hiệu 15, TERM (là tín hiệu kết thúc chương trình).
- Lệnh kill -9 PID: ngừng thi hành tiến trình mà không bị các tiến trình khác can thiệp (tín hiệu 9, KILL).
- Super-user mới có quyền dừng tất cả các tiến trình, còn người sử dụng chỉ được dừng các tiến trình của mình.
- Các signal thường dùng lệnh kill bao gồm:
 

Tên Giá trị Tác động
SIGHUP 1 Hangup (gọi lại tiến trình)
SIGINT 2 Interrupt (Ngắt từ bàn phím Ctrl + C)
SIGKILL 9 Hủy tiến trình
SIGTERM 15 Terminate – Kết thúc tiến trình
SIGSTOP 17, 19, 23 Dừng tiến trình
 
 

Khi kết thúc một tiến trình hay một chuỗi các tiến trình, thông thường nên tiến hành thử với tín hiệu ít gây nguy hiểm nhất, SIGTERM, nếu không được mới sử dụng các tín hiệu INT hay KILL.

Lập trình với tiến trình (Process)

Lập trình với tiến trình (Process) Đăng ngày 21-11-2013  Tìm hiểu về tiến trình (process) trên Linux, cơ chế giao tiếp giữa các tiến trình. Biết cách lập trình giao tiếp giữa 2 process. PC Linux (Ubuntu) with arm-linux-gcc- Bộ KIT thực hành FriendlyArm mini/macro2440 1.1428571428571/10 4773

Thảo luận:

Để bình luận bạn phải đăng nhập thành viên.

File tương tự

Files cùng mục

 

File tải nhiều nhất

Megacode.vn - Thư viện mã nguồn chia sẻ, tải file cho cộng đồng
Copyright © 2013-2016. All rights reserved. Bản quyền thuộc VinaGon
Địa chỉ: Số 38 Hàng Bè, Hàng Bạc, Hoàn Kiếm, Hà Nội.
Văn phòng giao dịch: Phòng 28, Tầng 6, HH1A Linh Đàm, Hoàng Mai, Hà Nội
Email: info@vinagon.com | Website: www.vinagon.com | Điện thoại: (+844) 6. 32.979.36;
logo megacode

Megacode đã đăng ký với Bộ Công Thương
Thư viện mã nguồn mở lớn nhất Việt Nam.



Hỗ trợ khách hàng trên Megacode
Hỗ trợ kỹ thuật cho thành viên:
Tổng đài: (+844) 6. 32.979.36
Số di động (Hotline): 0969.091.265
Thời gian làm việc:
Sáng: 8h-12h; Chiều: 13h30-17h30
(Nghỉ chiều T7, CN và các ngày lễ, tết)
Chat với Megacode
https://www.facebook.com/megacodevn