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 1BÁ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 21.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 34.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 4Hì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 5Hình 4.5: Kết quả thực thi chính xác 74
Trang 6DANH 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 7Bả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 8DANH 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 9CHƯƠ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 10Chứ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 11then 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 12else 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 13Hì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 14then
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 15Bả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 16echo "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 17fi 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 18Cá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 19if [ $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 20exit $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 21CHƯƠ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 22trong 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 23strcmp(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 25check_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 26Cá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 27memset(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 28Mô 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 29if (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 30printf("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 312.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 32Chứ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 34if (strcmp(argv[1], "raw6") == 0) {
} } void tcp_list(int argc, char *argv[]) { int fd;