1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn lập trình nhân linux chương 1 lập trình shell

69 7 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo bài tập lớn lập trình nhân Linux chương 1 lập trình shell
Tác giả Trương Quốc Quân, Nguyễn Việt Tùng, Phạm Thị Dung
Người hướng dẫn TS. Phạm Văn Hưởng
Trường học Học viện Kỹ thuật Mật mã
Chuyên ngành Kỹ thuật phần mềm
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 69
Dung lượng 2,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bảng 1.1: Mô tả chức năng list file Mô tả Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện tại và sử dụng tên được truyền vào làm tên file.. Cách thực hiện Thực hiện bằng cách

Trang 1

BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH NHÂN LINUX

Giảng viên hướng dẫn: TS Phạm Văn Hưởng

Sinh viên thực hiện: Trương Quốc Quân – CT030440

Nguyễn Việt Tùng – CT030454 Phạm Thị Dung – CT030409

Hà Nội, 2022

Trang 2

1.2 Auto install and uninstall 13

1.2.1 Phân tích thiết kế 13

1.2.2 Thực thi 14

1.3 Task management 15

1.3.1 Phân tích thiết kế 15

1.3.2 Thực thi 16

1.4 Time management 19

1.4.1 Phân tích thiết kế 19

1.4.2 Thực thi 20

CHƯƠNG 2 Lập trình C 23

2.1 File management 23

2.1.1 Phân tích thiết kế 23

2.1.2 Thực thi 24

2.2 Network management 28

2.2.1 Phân tích thiết kế 28

2.2.2 Thực thi 29

2.3 Process management 30

2.3.1 Phân tích thiết kế 30

2.3.2 Thực thi 31

2.4 Socket management 35

2.4.1 Phân tích thiết kế 35

2.4.2 Thực thi 37

Trang 3

4.1 Tổng quan 59

4.2 Các struct được sử dụng cho quá trình ánh xạ bộ nhớ 60

4.2.1 Struct page 60

4.2.2 Struct vm_area_struct 61

4.2.3 Struct mm_struct 62

4.3 Ánh xạ bộ nhớ trong driver thiết bị 62

4.4 Phần thực hành 64

4.4.1 Ánh xạ bộ nhớ vật lý liên tục tới không gian người dùng 65

4.4.2 Ánh xạ bộ nhớ vật lý không liệ tục tới không gian người dùng 66

4.4.3 Các thao tác đọc ghi trong vùng nhớ đã ánh xạ 67

4.4.4 Hiển thị vùng nhớ đã ánh xạ sử dụng procfs 67

4.5 Hướng dẫn thiết lập hệ thống 69

4.5.1 Thiết lập hệ thống máy ảo và lấy khung từ github 69

4.5.2 Đảm bảo các dependencies cho máy 71

4.5.3 Sản sinh khung xương mã – khởi động máy ảo qemu 72

Trang 4

Hình 2.1: Usecase file management trong lập trình C 23

Hình 2.2: Usecase network management trong lập trình C 28

Hình 2.3: Usecase process management trong lập trình C 31

Hình 2.4: Usecase socket management ở trong lập trình C 35

Hình 3.1: Mô tả nhân linux 43

Hình 3.2: Lệnh lsmod 44

Hình 3.3:Lệnh insmod 44

Hình 3.4: Lệnh modinfo 44

Hình 3.5: Lệnh rmmod 45

Hình 3.6: Makefile để build module nhân 54

Hình 3.7: Biên dịch module nhân 54

Hình 3.8:Choice = 1 (factory) 55

Hình 3.9: Choice = 2 (matadd) 55

Hình 3.10: Choice = 3 (matnul) 56

Hình 3.11: Choice = 4 (PrimeBetween) 56

Hình 3.12: Choice = 5 (SmallerNumInMatrix) 57

Hình 3.13: Choice = 6 (NumdivisibleByMatrix) 57

Hình 3.14: Choice = 7 (PrimeOfMatrix) 58

Hình 4.1: Cấu trúc địa chỉ 59

Hình 4.2: Virtual memory 60

Hình 4.3: Nội dung file maps 61

Hình 4.4: Ảnh minh hoạ lỗi không tương thích các thư viện 32bit 70

Trang 5

Hình 4.5: Kết quả thực thi chính xác 74

Trang 6

DANH MỤC BẢNG

Bảng 1.1: Mô tả chức năng list file 9

Bảng 1.2: Mô tả chức năng create file 10

Bảng 1.3: Mô tả chức năng remove file 10

Bảng 1.4: Mô tả chức năng show file 10

Bảng 1.5: Mô tả chức năng edit file 10

Bảng 1.6: Mô tả chức năng đổi tên files 10

Bảng 1.7: Mô tả chức năng Copy file 11

Bảng 1.8: Mô tả chức năng auto install 13

Bảng 1.9: Mô tả chức năng auto uninstall 14

Bảng 1.10: Mô tả chức năng list của task management 16

Bảng 1.11: Mô tả chức năng create của task management 16

Bảng 1.12: Mô tả chức năng remove của task management 16

Bảng 1.13: Mô tả chức năng edit của task management 16

Bảng 1.14: Mô tả chức năng info 19

Bảng 1.15: Mô tả chức năng thay đổi giờ hệ thống 19

Bảng 1.16: Mô tả chức năng thay đổi ngày tháng trong hệ thống 20

Bảng 1.17: Mô tả chức năng tự động cập nhật thời gian hệ thống 20

Bảng 2.1: Mô tả chức năng list file trong lập trình C 23

Bảng 2.2: Mô tả chức năng create file ở trong lập trình C 24

Bảng 2.3: Mô tả chức nưng remove file ở trong lập trình C 24

Bảng 2.4: Mô tả chức năng show file trong lập trình C 24

Bảng 2.5: Mô tả list deveice trong lập trình C 29

Bảng 2.6: Mô tả chức năng list process ở trong lập trình C 31

Bảng 2.7: Mô tả chức năng kill process ở trong lập trình C 31

Bảng 2.8: Mô tả list tcp ở trong lập trình C 35

Bảng 2.9: Mô tả list udp ở trong lập trình C 35

Trang 7

Bảng 2.10: Mô tả list raw ở trong lập trình C 36

Bảng 2.11: Mô tả list unix ở trong lập trình C 36

Bảng 2.12: Mô tả list tcp6 ở trong lập trình C 36

Bảng 2.13: Mô tả list udp6 ở trong lập trình C 36

Bảng 2.14: Mô tả list raw6 ở trong lập trình C 37

Trang 8

DANH MỤC CODE

Code 1.1: Code thực thi file management 13

Code 1.2: Code thực thi auto install and uninstall 15

Code 1.3: Code thực thi task management 18

Code 1.4: Code thực thi time management 22

Code 2.1: Code thực thi file management trong C 28

Code 2.2: Code thực thi network management trong lập trình C 30

Code 2.3: Code thực thi process management ở trong lập trình C 34

Code 2.4: Code thực thi socket management ở trong lập trình C 42

Trang 9

CHƯƠNG 1 Lập trình shell 1.1 File management

1.1.1 Phân tích thiết kế

Đối với chức năng file management, chúng em đi tìm hiểu và phân tích ra bảy chức năng chính liên quan đến quản lý file bao gồm:

Hình 1.1: sơ đồ usecase mô tả các chức năng trong file management

Mô tả Chức năng này sẽ tiến hành thực hiện hiển thị tất cả các file

và thư mục có trong folder hiện tại.

Cách thực hiện Thực hiện bằng cách sử dụng chương trình ls ở trong linux.

Bảng 1.1: Mô tả chức năng list file

Mô tả Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện

tại và sử dụng tên được truyền vào làm tên file.

Cách thực hiện Thực hiện bằng cách sử dụng chương trình touch ở trong

linux

Bảng 1.2: Mô tả chức năng create file

Trang 10

Chức năng Remove file

Mô tả Chức năng này sẽ tiến hành xoá file ở trong thư mục hiện

tại, tên file xoá sẽ được truyền vào như là một arument Cách thực hiện Thực hiện bằng cách sử dụng chương trình rm ở trong linux

Bảng 1.3: Mô tả chức năng remove file

Mô tả Chức năng này sẽ tiến hành hiển thị nội dung của file lên

console.

Cách thực hiện Thực hiện bằng cách sử dụng chương trình cat ở trong

linux

Bảng 1.4: Mô tả chức năng show file

Mô tả Chức năng này sẽ tiến hành mở trình soạn thảo trên file,

cho phép thực hiện chỉnh sửa nội dung file.

Cách thực hiện Thực hiện bằng cách sử dụng chương trình vim ở trong

linux.

Bảng 1.5: Mô tả chức năng edit file

Cách thực hiện Thực hiện bằng cách sử dụng chương trình mv ở trong

linux.

Bảng 1.6: Mô tả chức năng đổi tên files

Mô tả Chức năng này sẽ tiến hành copy file bất kỳ được chỉ định

bằng tên file ở trong thư mục hiện tại và copy sang một thư mục khác

Cách thực hiện Thực hiện bằng cách sử dụng chương trình mv ở trong

linux.

Bảng 1.7: Mô tả chức năng Copy file

1.1.2 Thực thi

#!/bin/sh command=$1

if [ $command = "" ]

Trang 11

then echo "chua nhap chuc nang"

fi # file management

if [ $command = "list" ] then

ls -la fi

if [ $command = "create-file" ] then

if [ $2 = "" ] then echo "chua co ten file"

else touch $2 fi

fi

if [ $command = "remove-file" ] then

if [ $2 = "" ] then echo "chua co ten file"

else rm -rf $2 fi

fi

if [ $command = "show-file" ] then

if [ $2 = "" ] then echo "chua co ten file"

else less $2 fi

fi

if [ $command = "edit-file" ] then

if [ $2 = "" ] then echo "chua co ten file"

Trang 12

else vim $2 fi

fi

if [ $command = "rename-file" ] then

if [ $2 = "" -o $3 = "" ] then echo "chua nhap ten file va ten file moi" else mv $2 $3

fi fi

if [ $command = "copy-file" ] then

if [ $2 = "" -o $3 = "" ] then echo "chua nhap ten file va file dich"

else cp $2 $3 fi

fi

Code 1.1: Code thực thi file management

1.2 Auto install and uninstall 1.2.1 Phân tích thiết kế

Đối với chức năng auto install and uninstall, chúng em đi xây dựng hai chương trình

đó là install và uninstall.

Trang 13

Hình 1.2: Biểu đồ usecase chức năng auto install và uninstall

Mô tả Chức năng install sẽ tiến hành đọc nội dung của file input.txt

và cài đặt tất cả các package được liệt kê ở trong file.

Cách thực hiện Đọc từng dòng tên các phần mềm được liệt kê ở trong file

input.txt, sau đó dùng lệnh sudo apt-get với cờ -y để tiến hành cài đặt tất cả các gói.

Bảng 1.8: Mô tả chức năng auto install

Mô tả Chức năng uninstall sẽ tiến hành đọc nội dung của file

input.txt và gỡ cài đặt tất cả các chương trình được liệt kê Cách thực hiện Đọc từng dòng tên các phần mềm được liệt kê ở trong file

input.txt, sau đó dùng lệnh sudo apt-get purge với cờ -y để tiến hành cài đặt tất cả các gói.

Bảng 1.9: Mô tả chức năng auto uninstall

1.2.2 Thực thi

#!/bin/sh command=$1

if [ -z $command ] then echo 'Chua nhap chuc nang' fi

if [ $command = "install" ] then

if [ `whoami` != "root" ] then

echo 'Ban can phai chay lenh sudo de thay doi he thong'

exit $E_NOTROOT fi

cat input.txt | xargs sudo apt-get -y install fi

if [ $command = "uninstall" ]

Trang 14

then

if [ `whoami` != "root" ] then

echo 'Ban can phai chay lenh sudo de thay doi he thong'

exit $E_NOTROOT fi

cat input.txt | xargs sudo apt-get -y purge fi

Code 1.2: Code thực thi auto install and uninstall

1.3 Task management 1.3.1 Phân tích thiết kế

Đối với task management chúng em tiến hành phân tích ra bốn chức năng lần lượt là liệt kê danh sách các task được lập lịch, tạo lập lịch tiến trình, xoá tất cả các lịch đã lập và cuối cùng là sử đổi lịch tiến trình.

Hình 1.3: Sơ đồ usecase biểu thị task management

Trang 15

Bảng 1.10: Mô tả chức năng list của task management

Mô tả Chức năng create sẽ tiến hành tạo lập lịch tiến trình tuỳ

thuộc vào thông tin người dùng nhập vào.

Cách thực hiện Sử dụng chương trình crontab để tạo lập lịch tiến trình

Bảng 1.11: Mô tả chức năng create của task management

Cách thực hiện Sử dụng chương trình crontab và text editor để thực hiện

chỉnh sửa nội dung lập lịch.

Bảng 1.13: Mô tả chức năng edit của task management

1.3.2 Thực thi

#!/bin/sh command=$1

if [ -z $command ] then echo "Chua nhap chuc nang"

fi

if [ $command = "list" ] then

crontab -l fi

if [ $command = "create" ] then

echo "Xin hay nhap doan lenh ban muon lap lich" read order

Trang 16

echo "Gio ban se nhap gio va phut de chay."

echo "Hay nhap gio"

read hour echo "Hay nhap phut"

read min echo "Gio ban can nhap ngay tac vu chay hang thang." echo "Neu ban muon chay tac vu hang ngay, hay nhap

*"

echo "Neu ban muon chon ngay rieng le, hay nhap cac ngay ban mong muon, phan cach boi dau \",\""

read day echo "Gio ban can nhap thang tac vu ma tac vu chay." echo "Neu ban muon tac vu chay hang thang, hay nhap

*"

echo "Neu ban muon chon thang rieng le, hay nhap cac thang ban mong muon, phan cach boi dau \",\""

read month echo "Gio ban can nhap ngay tac vu chay hang tuan." echo "Neu ban muon chay tac vu hang ngay, hay nhap

read confirmation

if [ $confirmation = 'Y' ] then

echo "$min $hour $day $month $dow

$order" >> "input.txt"

crontab l u $LOGNAME | cat

"input.txt" | crontab u $LOGNAME

rm -f "input.txt"

else echo "Aborted\n"

Trang 17

fi fi

if [ $command = "remove-all" ] then

crontab -r fi

if [ $command = "edit" ] then

crontab -e fi

Code 1.3: Code thực thi task management

1.4 Time management 1.4.1 Phân tích thiết kế

Chương trình time management được thiết kế thành bốn chức năng con bao gồm: hiện thông tin thời gian, cài đặt giờ, cài đặt ngày và tự động cập nhật ngày giờ.

Hình 1.4: Biểu đồ usecase chức năng task management

Mô tả Chức năng info sẽ hiển thị thời gian ngày tháng của hệ thống

cũng như múi giờ.

Trang 18

Cách thực hiện Sử dụng chương trình date để thực hiện xem giờ của hệ

Mô tả Chức năng automatic được sử dụng để tự động cập nhật lại

thời gian của hệ thống Cách thực hiện Sử dụng chương trình npdate để thực hiện tự động cập nhật

lại thời gian của hệ thống.

Bảng 1.17: Mô tả chức năng tự động cập nhật thời gian hệ thống

1.4.2 Thực thi

#!/bin/sh command=$1 # if [ `whoami` != "root" ] # then

# echo 'Ban can phai chay lenh sudo de thay doi thoi gian'

# exit $E_NOTROOT # fi

if [ -z $command ] then echo "Chua nhap chuc nang"

fi

Trang 19

if [ $command = "info" ] then TZ="Asia/Ho_Chi_Minh" date fi

if [ $command = "set-hour" ] then

if [ `whoami` != "root" ] then

echo 'Ban can phai chay lenh sudo de thay doi thoi gian'

exit $E_NOTROOT fi

echo "Xin hay nhap gio theo dinh dang hh:mm:ss?" read new_time

date +%T -s $new_time fi

if [ $command = "set-date" ] then

if [ `whoami` != "root" ] then

echo 'Ban can phai chay lenh sudo de thay doi thoi gian'

exit $E_NOTROOT fi

echo "Xin hay nhap ngay theo dinh dang yyyymmdd?" read new_time

date +%Y%m%d -s $new_time fi

if [ $command = "automatic" ] then

if [ `whoami` != "root" ] then

echo 'Ban can phai chay lenh sudo de thay doi thoi gian'

Trang 20

exit $E_NOTROOT fi

echo "Thoi gian dang duoc cap nhat theo server cua Microsoft "

ntpdate -4 time.windows.com fi

Code 1.4: Code thực thi time management

Trang 21

CHƯƠNG 2 Lập trình C 2.1 File management

2.1.1 Phân tích thiết kế

Đối với chức năng file management, chúng em đi tìm hiểu và phân tích ra bảy chức năng chính liên quan đến quản lý file bao gồm:

Hình 2.5: Usecase file management trong lập trình C

Mô tả Chức năng này sẽ tiến hành thực hiện hiển thị tất cả các file

và thư mục có trong folder hiện tại.

Cách thực hiện Sử dụng hàm diropen ở trong thư viện <dirent.h> để thực

hiện đọc hết các file và folder trong thư mục được trỏ tới, tiếp theo sử dụng struct dirent để có thể lấy được tên file hoặc tên folder, khi đã có được tên rồi thì tiến hành in ra màn hình.

Bảng 2.18: Mô tả chức năng list file trong lập trình C

Mô tả Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện

tại và sử dụng tên được truyền vào làm tên file.

Cách thực hiện Thực hiện kiểm tra param xem đã truyền vào tên file chưa,

nếu chưa sẽ báo lỗi Khi đã có tên file, sử dụng hàm open ở

Trang 22

trong thư viện <fcntl.h> với cờ là O_CREAT kèm theo thuộc tính file là 0666.

Bảng 2.19: Mô tả chức năng create file ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành xoá file ở trong thư mục hiện

tại, tên file xoá sẽ được truyền vào như là một arument Cách thực hiện Sử dụng hàm unlink ở trong thư viện <unistd.h> để thực

hiện xoá file.

Bảng 2.20: Mô tả chức nưng remove file ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiển thị nội dung của file lên

console.

Cách thực hiện Thực hiện bằng cách mở file với cờ O_RDONLY và tiến

hành đọc file và hiển thị nội dung file trên console đến hết file.

Bảng 2.21: Mô tả chức năng show file trong lập trình C

Trang 23

strcmp(argv[1], "cat") == 0) {

if (argc < 3) { printf("chua nhap ten file\n");

exit(0);

} }

} void list_file(int argc, char *argv[]) { char dir_path[100];

strcpy(dir_path, ".");

DIR *d;

struct dirent *dir;

if (argc == 3) { strcpy(dir_path, argv[2]);

}

d = opendir(dir_path);

if (d) { while ( (dir = readdir(d)) != NULL) { printf("%s\n", dir->d_name);

} closedir(d);

} else { printf("folder khong ton tai\n");

exit(0);

} } void create_file(int argc, char *argv[]) { int fd;

fd = open(argv[2], O_CREAT, 0666);

if (fd == -1) { printf("tao file that bai\n");

Trang 24

} else { printf("tao file %s thanh cong\n", argv[2]); exit(0);

} } void remove_file(int argc, char *argv[]) { int status;

status = unlink(argv[2]);

if (status == -1) { printf("error delete file ! file not found\n"); exit(0);

} else { printf ("success delete file %s \n", argv[2]); exit(0);

} } void cat_file(int argc, char *argv[]) { int fd;

char buffer[1000];

fd = open(argv[2], O_RDONLY);

if (fd == -1) { printf("error file not found\n");

exit(0);

} while (read(fd, buffer, sizeof(buffer)) != 0) { printf("%s", buffer);

} printf("\n");

} int main(int argc, char *argv[]) {

Trang 25

check_param(argc, argv);

if (strcmp(argv[1], "ls") == 0) { list_file(argc, argv);

}

if (strcmp(argv[1], "create") == 0) { create_file(argc, argv);

}

if (strcmp(argv[1], "remove") == 0) { remove_file(argc, argv);

}

if (strcmp(argv[1], "cat") == 0) { cat_file(argc, argv);

} return 0;

}

Code 2.5: Code thực thi file management trong C

2.2 Network management 2.2.1 Phân tích thiết kế

Chức năng network management bao gồm chức năng list ra các network deveice.

Hình 2.6: Usecase network management trong lập trình C

deveice trong máy.

Trang 26

Cách thực hiện Sử dụng struct ifaddr trong thư viện <ifaddrs.h> để có thể

liệt kê được toàn bộ các network deveice trong máy Thông tin được in ra bao gồm deveice name, protocol và address.

Bảng 2.22: Mô tả list deveice trong lập trình C

exit(0);

} } void list_netdevice(int argc, char *argv[]) { struct ifaddrs *addresses, *address;

int status, family, family_size;

char buffer[100];

status = getifaddrs(&addresses);

if (status == -1) { printf("khong the lay duoc dia chi\n");

exit(0);

} address = addresses;

printf("%-15s%-15s%-15s\n", "device name", "protocol",

"address");

while (address) { family = address->ifa_addr->sa_family;

family_size = family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6);

Trang 27

memset(buffer, 0, sizeof(buffer));

getnameinfo(address->ifa_addr, family_size, buffer, sizeof(buffer), 0, 0, NI_NUMERICHOST);

printf("%-15s%-15s%-15s\n", address->ifa_name, family == AF_INET ? "IPv_4" : "IPv_6", buffer);

address = address->ifa_next;

} freeifaddrs(addresses);

} int main(int argc, char *argv[]) { check_param(argc, argv);

if (strcmp(argv[1], "list") == 0) { list_netdevice(argc, argv);

} return 0;

}

Code 2.6: Code thực thi network management trong lập trình C

2.3 Process management 2.3.1 Phân tích thiết kế

Chức năng process management bao gồm hai chức năng đó là liệt kê ra tất cả các process đang hoạt động và chức năng gửi signal tới từng process.

Hình 2.7: Usecase process management trong lập trình C

Trang 28

Mô tả Chức năng này sẽ tiến hành hiển thị tất cả các process đang

được thực thi ở trong máy.

Cách thực hiện Sử dụng struct dirent và hàm opendir để mở thư mục /dir,

những thư mục nào bắt đầu bằng số chính là các id biển hiện tiến trình đang chạy, tiến hành đọc file status ở trong thư mục tiến trình để lấy thông tin tiến trình.

Bảng 2.23: Mô tả chức năng list process ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành gửi signal tới process được chỉ

printf("chua nhap lenh\n");

printf("\033[0m");

exit(0);

}

if (strcmp(argv[1], "ps") == 0) { }

if (strcmp(argv[1], "kill") == 0) {

Trang 29

if (argc < 4) { printf("\033[0;31m");

printf("chua nhap ma lenh\n");

printf("\033[0m");

} } } void list_process(int argc, char *argv[]) { DIR *d;

struct dirent *dir;

char buffer[100], status_path[1000], process_name[100]; int status_fd;

d = opendir("/proc");

printf(" %-10s%-10s\n", "ID", "Name");

while ((dir = readdir(d)) != NULL) { if(isdigit(dir->d_name[0])) { sprintf(status_path, "/proc/%s/status", dir-

>d_name);

status_fd = open(status_path, O_RDONLY);

read(status_fd, buffer, sizeof(buffer));

sscanf(buffer, "Name: %s", process_name); printf(" %-10s%-10s\n", dir->d_name, process_name);

} } } void kill_process(int argc, char *argv[]) { int process_id, kill_arg, status;

process_id = atoi(argv[2]);

kill_arg = atoi(argv[3]);

status = kill(process_id, kill_arg);

if (status == 0) { printf("\033[0;32m");

Trang 30

printf("kill %d success\n", process_id); printf("\033[0m");

exit(0);

} else { printf("\033[0;31m");

printf("kill fail\n");

printf("\033[0m");

exit(0);

} } int main(int argc, char *argv[]) { check_param(argc, argv);

if (strcmp(argv[1], "ps") == 0) { list_process(argc, argv);

}

if (strcmp(argv[1], "kill") == 0) { kill_process(argc, argv);

} return 0;

}

Code 2.7: Code thực thi process management ở trong lập trình C

Trang 31

2.4 Socket management 2.4.1 Phân tích thiết kế

Chức năng socket mamagement thực hiện liệt kê danh sách các socket đang mở ở trong hệ thống theo từng loại: tcp, udp, raw, unix, tcp6, udp6, raw6.

Hình 2.8: Usecase socket management ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket tcp lên

console Cách thực hiện Tiến hành đọc file /proc/net/tcp và in ra thông tin những

socket đang được sử dụng trong máy.

Bảng 2.25: Mô tả list tcp ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket udp lên

console Cách thực hiện Tiến hành đọc file /proc/net/udp và in ra thông tin những

socket đang được sử dụng trong máy.

Bảng 2.26: Mô tả list udp ở trong lập trình C

Mô tả Chức năng này sẽ tiến hành hiện những socket raw lên

console Cách thực hiện Tiến hành đọc file /proc/net/raw và in ra thông tin những

socket đang được sử dụng trong máy.

Bảng 2.27: Mô tả list raw ở trong lập trình C

Trang 32

Chức năng List unix

console Cách thực hiện Tiến hành đọc file /proc/net/unix và in ra thông tin những

socket đang được sử dụng trong máy.

Bảng 2.28: Mô tả list unix ở trong lập trình C

console Cách thực hiện Tiến hành đọc file /proc/net/tcp6 và in ra thông tin những

socket đang được sử dụng trong máy.

Bảng 2.29: Mô tả list tcp6 ở trong lập trình C

console Cách thực hiện Tiến hành đọc file /proc/net/udp6 và in ra thông tin những

socket đang được sử dụng trong máy.

Bảng 2.30: Mô tả list udp6 ở trong lập trình C

console Cách thực hiện Tiến hành đọc file /proc/net/raw6 và in ra thông tin những

socket đang được sử dụng trong máy.

Bảng 2.31: Mô tả list raw6 ở trong lập trình C

Trang 34

if (strcmp(argv[1], "raw6") == 0) {

} } void tcp_list(int argc, char *argv[]) { int fd;

Ngày đăng: 07/09/2023, 23:13

🧩 Sản phẩm bạn có thể quan tâm

w