Professional Documents
Culture Documents
77 66 5
404 222 66
404 322 66
c. Tìm hiểu và cài đặt lệnh &pstree (nếu chưa được cài đặt), sau đó trình bày cách sử
dụng lệnh này để tìm tiến trình cha của một tiến trình dựa vào PID của nó.
Dùng lệnh $pstree để hiện thị danh sách tất cả tiến trình đang chạy trên hệ thống
Khi chạy sẽ xảy ra lỗi bởi vì thiếu các thư viện <unistd.h>, <stdlib.h>, <sys/wait.h> để
chứa các lệnh như fork(), exit(), wait()
Sau khi thêm các thư viện
Kết quả in ra là
• pthread_attr_destroy(): hàm hủy các đối tượng mang thuộc tính thread
#include<pthread.h>
#include<stio.h>
#include<stdlib.h>
void *thread_print(void*message)
{
while(1) {
Printf(“Hi, how are u?\n”);
}
int main(){
pthread_attr_t atte;
pthread_attr_init($attr);
printf(“I’m fine, thank you and you?\n”);
pthread_attr_destroy(&attr);
return 0;
}
• pthread_attr_setstacksize() : Các stacksize thuộc tính sẽ xác định kích thước tối
thiểu ngăn xếp (theo byte) được phân bổ cho các chủ đề chồng tạo ra.
#include<pthread.h>
#include<stio.h>
#include<stdlib.h>
int main() {
pthread_attr_init(&attr)
pthread_attr_getstacksize(&attr, &stacksize);
printf(“Thread stack size = %d byte \n”, stacksize);
return 0;}
Câu 4: Viết chương trình làm các công việc sau theo thứ tự:
a. In ra dòng chữ: “Welcome to IT007, I am <your student ID>!”
b. Mở tệp abcd.txt bằng vim editor
c. Tắt vim editor khi người dùng nhấn CRTL+C
d. Khi người dùm nhấn CRTL+C thì in ra dòng chữ: “You are pressed CRTL+C!
Goodbye!”
Phân tích đoạn code như sau:
Tạo hàm on_signit, bên trong hàm nếu giá trị loop = 1 thì thực hiện lệnh printf in ra dòng
chữ “You are pressed CTRL+C! Goodbye!” và giá trị loop giảm đi 1 đơn vị.
Tạo hàm on_signit2, bên trong hàm nếu giá trị loop = 2 thì thực hiện lệnh system trả về khi
thực hiện lệnh “pkill wim”.
Tạo một con trỏ hàm open_vim, hàm system() thực hiện lệnh “gnome-terminal – vim
abcd.txt “ và trả về khi thực hiện xong lệnh, tiếp theo là truyền thông tin giữ các tín hiệu
qua lệnh signal, khi gặp signal: SIGNT có nghĩa là được thông báo nếu người sử dụng gửi
1 tiến hiệu ngắt (Crtl+C) và thực hiện hàm on_signit2, khi giá trị loop != 1 sẽ thoát khỏi
vòng lặp và kết thúc hàm.
Hàm main sẽ in ra dòng chữ “Welcome to IT007, I am20521976” sau đó là đến hàm
pthread_create để tạo tiến trình với id_thread là biến tham chiếu kiểu pthread_t và
*open_vim là một con trỏ hàm kiểu void đến chức năng mong muốn tiểu trình thực thi.
Lệnh pthread_join() sẽ ngưng pthread đang gọi tới. Khi gặp hàm signal, có tên signal là
SIGINT thông báo người dùng gửi 1 tín hiệu ngắt (Crtl+C) và thực hiện hàm on_signit, khi
giá trị loop != 0 thoát khỏi vòng lặp, xuống dòng và kết thúc.
Khi thực hiện chương trình: