Đây chính cơ hội lý tưởng cho các lập trình viên cũng như các nhà phát triển.- Hoạt động “mượt” trên các máy tính có cấu hình yếu: Với Linux, khi nâng cấp lên phiên bản mới, các máy tính
Trang 1LỜI MỞ ĐẦU
Trong thời đại bùng nổ công nghệ thông tin như hiện nay, con người ngày càng được hưởng nhiều tiện ích từ sự hỗ trợ của các phần mềm và đặc biệt là những phần mềm mã nguồn mở Linux là một trong số những phần mềm mã nguồn
mở được sử dụng và ứng dụng rộng r.i nhất được phát triển từ phần mềm UNIX.
Linux ngoài việc trao cho người sử dụng quyền sử dụng miễn phí, còn có quyền sao chép, nghiên cứu, sửa đổi Vi vậy, phần mềm mã nguồn mở Linux ngày càng phát triển do có sự phát triển của cả cộng đồng Nước ta đang trong quá trình hội nhập cùng với thế giới, công nghệ thông tin của nước ta đang trong giai đoạn học hỏi, phát triển và cộng đồng sử dụng mã nguồn mở của nước ta đang có những bước tiến hoà cùng thế giới Với mong muốn có những hiểu biết chính xác về những vấn đề cơ bản cốt lõi của phần mềm mã nguồn mở, bài báo cáo của em sẽ đề cập tới những nội dung:
- Phần 1: Giới thiệu chung
- Phần 2: Xây dựng chương trình
- Phần 3: Tìm hiểu về memory mapping
Em chân thành cảm ơn sự giúp đỡ của giảng viên TS Phạm Văn Hưởng đã cung cấp những kiến thức và tài liệu môn học để em hoàn thành báo cáo của mình Trong quá trình tìm hiểu thực hiện và hoàn thành báo cáo, do kiến thức còn chưa chuyên sâu và phạm vi nghiên cứu còn hạn hẹp nên không tránh khỏi những sai sót, rất mong nhận được sự đóng góp ý kiến từ thầy để bài báo cáo của em được hoàn thiện hơn.
Trang 2CHƯƠNG 1 GIỚI THIỆU CHUNG
1.1 Tổng quan về Linux
1.1.1 Khái niệm hệ điều hành Linux
Linux là một hệ điều hành mã nguồn mở (open-source OS) chạy trên hầu hết các kiến trúc vi xử lý, bao gồm dòng vi xử lý ARM Linux được hỗ trợ bởi một cộng đồng mã nguồn mở (GNU), chính điều này làm cho Linux rất linh hoạt và phát triển rất nhanh với nhiều tính năng không thua kém các hệ điều hành khác hiện nay Tất cả các ứng dụng chạy trên hệ điều hành UNIX đều tương thích với Linux.
Hầu hết các bản Linux đều hỗ trợ rất nhiều ngôn ngữ lập trình, đặc biệt công
cụ GCC cho phép người lập trình có thể biên dịch và thực thi ứng dụng viết bằng nhiều ngôn ngữ lập trình khác nhau: C/C++, Java, v.v Ngoài ra, Linux còn hỗ trợ ngôn ngữ lập trình để phát triển các ứng dụng đồ họa như: JTK+, Qt, v.v
Ngày nay, Linux được phân ra làm nhiều nhánh như: Ubuntu, Linux Mint, Fedora… Được sử dụng thông dụng nhất hiện nay đang là Ubuntu.
Hình 1.1 Hệ điều hành Linux
1.1.2 Cấu trúc của hệ điều hành Linux
Kernel: Đây là yếu tố quan trọng nhất hay còn được gọi là phần Nhân bởi
nó chứa đựng các Module hay các thư viện để quản lý, giao tiếp giữa phần cứng máy tính và các ứng dụng
Shell:
dụng yêu cầu, chuyển đến cho Kernel xử lý Shell chính là cầu nối để kết nối
Trang 3Internet và Application, phiên dịch các lệnh từ Application gửi đến Kernel để thực thi
(Bourne-again shell), csh (C shell), ash (Almquist shell), tsh (TENEX C shell), zsh (Z shell)
Application: Đây là phần quen thuộc với chúng ta nhất, phần để người dùng cài đặt ứng dụng, chạy ứng dụng để người dùng có thể phục vụ cho nhu cầu của mình
Hình 1.2 Cấu trúc của hệ điều hành Linux
1.1.3 Ưu và nhược điểm của Linux
Ưu điểm:
- Tính linh hoạt: Đặc biệt, người dùng còn có thể chỉnh sửa hệ điều hành theo nhu cầu sử dụng của mình Đây chính cơ hội lý tưởng cho các lập trình viên cũng như các nhà phát triển.
- Hoạt động “mượt” trên các máy tính có cấu hình yếu: Với Linux, khi nâng cấp lên phiên bản mới, các máy tính có cấu hình yếu vẫn sẽ được nâng cấp và hỗ trợ thường xuyên – tức chất lượng hoạt động vẫn trơn tru và ổn định.
- Không tốn chi phí mua/bán bản quyền: Với hệ điều hành này, bạn không
cần phải bỏ phí mua bản quyền mà có thể sử dụng đầy đủ các tính năng Bao gồm các ứng dụng văn phòng OpenOffice và LibreOffice.
- Tính bảo mật cao: Tất cả những phần mềm độc hại như virus, mã độc… đều không thể hoạt động trên Linux Do đó, độ bảo mật của hệ điều hành rất cao.
Nhược điểm:
Trang 4- Số lượng ứng dụng hỗ trợ trên Linux chưa phong phú, còn khá ít sự lựa chọn cho người dùng.
- Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux.
- Bạn sẽ mất một khoảng thời gian để “thích nghi” nếu chuyển từ Windows sang Linux vì thực sự khá khó để làm quen với Linux.
- Tuỳ vào tính chất, nhu cầu sử dụng mà bạn cần tìm một hệ điều hành thích hợp với mình.
1.1.4 Vai trò của Linux trong các hệ thống thông tin hiện nay
- Tổ chức, quản lý và vận hành các máy chủ, các dịch vụ trong hệ thống thông tin.
- Tạo môi trường, cung cấp các công cụ, các chính sách giải pháp bảo vệ an toàn thông tin cho các tổ chức, doanh nghiệp và cá nhân.
- Linux là nền tảng chính trong việc phát triển công nghệ điện toán đám mây (Cloud Computing) và dữ liệu lớn (Big Data).
- Linux hỗ trợ rất nhiều cho các ứng dụng di động, là nền tảng nhân cơ bản của hệ điều hành Android hiện nay.
- Linux được sử dụng hầu hết trong các thiết bị nhúng hiện nay, nó trở thành một nền tảng được sử dụng rất nhiều trong truyền hình, giải trí trong xe hơi, các hệ thống định vị và nhiều kiểu thiết bị khác.
- Linux là ngôi nhà của hệ điều hành cho tất cả các loại giải pháp ảo hóa có sẵn, cho dù nền tảng hoặc ảo hóa song song, ảo hóa hệ điều hành hay nhiều ý tưởng mơ hồ hơn như ảo hóa cộng tác Hiện nay, KVM của Linux hỗ trợ ảo hóa lồng nhau.
- Linux là một hệ thống thông tin an toàn, bảo mật và miễn phí.
1.2 Tổng quan về lập trình Embedded
1.2.1 Khái niệm
Hệ thống nhúng là một tập hợp những phần cứng và phần mềm máy tính dựa vào vi điều khiển hoặc bộ vi xử lý Đồng thời chúng được điều khiển bởi hệ điều hành thời gian thực RTOS Bên cạnh đó là bộ nhớ hạn chế và cũng có thể khác nhau cả về kích thước và cả độ phức tạp…
Linux là hệ điều hành được lựa chọn cho nhiều hệ thống nhúng như điện thoại thông minh, máy tính bảng, PDA, hộp giải mã tín hiệu và trình phát đa phương tiện cá nhân Bất kỳ phiên bản Linux nào được sử dụng để vận hành các máy như vậy đều được gọi là Embedded Linux Linux là một lựa chọn tự nhiên
Trang 5cho nhiều thiết bị này do chi phí thấp và dễ tùy biến Nó cũng đã được chuyển sang
bộ vi xử lý có mục đích tùy chỉnh.
Mặc dù sử dụng cùng một nhân, Linux nhúng khá khác so với hệ điều hành tiêu chuẩn Trước hết, nó cũng được thiết kế riêng cho các hệ thống nhúng Vì thế chúng có kích thước nhỏ hơn nhiều và cũng yêu cầu ít sức mạnh xử lý hơn và có những tính năng tối thiểu Nhân của Linux cũng được sửa đổi và được tối ưu hóa như một lập trình nhúng hệ điều hành Linux Phiên bản Linux như vậy cũng chỉ có thể chạy những ứng dụng được tạo riêng cho các thiết bị.
1.2.2 Ưu và nhược điểm
Ưu điểm:
- Embedded Linux có sự phát triển vượt bậc là do có sức hấp dẫn đối với các ứng dụng không đòi hỏi thời gian thực như: các hệ server nhúng, các ứng dụng giá thành thấp và đòi hỏi thời gian đưa sản phẩm ra thị trường nhanh.
- Linux là phần mềm mã nguồn mở nên bất kỳ ai cũng có thể hiểu và thay đổi theo ý mình.
- Linux là một hệ điều hành có cấu trúc module và chiếm ít bộ nhớ trong khi Windows không có các ưu điểm này.
- Nền tảng được độc lập (chúng được biên dịch trên một nền tảng và có thể được thực thi trên bất kỳ một nền tảng nào khác)
- Nó còn cho phép sửa đổi không giới hạn trong mã nguồn Có nghĩa là chúng
ta có thể sử dụng những thành phần này nhiều lần.
Nhược điểm:
- Embedded Linux không phải là hệ điều hành thời gian thực nên có thể không phù hợp với một số ứng dụng như điều khiển quá trình, các ứng dụng có các yêu cầu xử lý khẩn cấp.
- Embedded Linux thiếu một chuẩn thống nhất và không phải là sản phẩm của một nhà cung cấp duy nhất nên khả năng hỗ trợ kỹ thuật chưa cao.
1.2.3 Một số lĩnh vực ứng dụng
Ngày nay, các thiết bị nhúng Linux hiện diện ở khắp mọi nơi từ chiếc smartwatch nhỏ bé đến Tivi hay chiếc điện thoại di động phức tạp, đến siêu máy tính, xe ô tô và cả tàu vũ trụ,… Những điều này làm cho embedded Linux trở thành một miền đất đầy hứa hẹn cho những ai đam mê và chinh phục nó.
Một số lĩnh vực ứng dụng:
- Hệ thống nhúng được chạy trên Linux
- Điện thoại thông minh và Máy tính bảng
Trang 6Hình 2.1 Sơ đồ mô tả các chức năng trong quản lý file
Chức năng List file
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.
Bảng 2.1: Mô tả chức năng list file
Chức năng Create 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.
Bảng 2.2: Mô tả chức năng create file
Trang 7Mô 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.
Bảng 2.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.
Bảng 2.4: Mô tả chức năng show file
Chức năng Edit 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.
Bảng 2.5: Mô tả chức năng edit file
Mô tả Chức năng này sẽ tiến hành đổi tên file.
Bảng 2.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.
Bảng 2.7: Mô tả chức năng Copy file
- Code thực thi
#!/b bb /bb bbb b bbb=b 1 [ " " = "" ];
if [ "$command" = "" ]; then $command" = "" ]; then then echo " Chưa nhập chức năng" chức năng" "
exi t 1 fi
# b bbb b bbbbbb bbb [ " " = " " ];
if [ "$command" = "" ]; then $command" = "" ]; then list then
bb -bb [ " " = " - " ];
elif [ "$command" = "" ]; then $command" = "" ]; then create file then
Trang 8[ " 2" = "" ]; if [ "$command" = "" ]; then $ then
echo Chưa có tên file" tên file " "
bbbb
touch " 2" $
fi
[ " " = " - " ];
elif [ "$command" = "" ]; then $command" = "" ]; then remove file then
[ " 2" = "" ]; if [ "$command" = "" ]; then $ then
echo Chưa có tên file" tên file " "
bbbb
rm rf [ "$command" = "" ]; then $ - " 2"
fi
[ " " = " - " ];
elif [ "$command" = "" ]; then $command" = "" ]; then show-file" ]; then file then
[ " 2" = "" ]; if [ "$command" = "" ]; then $ then
echo Chưa có tên file" tên file " "
bbbb
bbbb "b2"
fi
[ " " = " - " ];
elif [ "$command" = "" ]; then $command" = "" ]; then ed" = "" ]; thenit file then
[ " 2" = "" ]; if [ "$command" = "" ]; then $ then
echo Chưa có tên file" tên file " "
bbbb
b bb "b 2"
fi
[ " " = " - " ];
elif [ "$command" = "" ]; then $command" = "" ]; then rename file then
[ " 2" = "" - " 3" = "" ]; if [ "$command" = "" ]; then $ o $ then
echo Chưa nhập chức năng" tên file và tên file mới" tên file mới " " bbbb
bb "b2" "b3"
fi
[ " " = " - " ];
elif [ "$command" = "" ]; then $command" = "" ]; then cop chức năng"y-file" ]; then file then
[ " 2" = "" - " 3" = "" ]; if [ "$command" = "" ]; then $ o $ then
echo Chưa nhập chức năng" tên file và tên file mới" file đích " " bbbb
bb "b2" "b3"
fi
[ " " = " - " ];
elif [ "$command" = "" ]; then $command" = "" ]; then comp chức năng"ress file then
[ " 2" = "" ]; if [ "$command" = "" ]; then $ then
echo Chưa nhập chức năng" tên file " "
echo Chưa nhập chức năng" tên file " "
elif [ "$command" = "" ]; then [ " 3" = "" ]; $ then
echo Chưa nhập chức năng" quy-file" ]; thenền mới cho tệp chức năng" tin " " bbbb
bbbbb "b3" "b2"
fi
Trang 9bbbb echo Chức năng" không" hợp chức năng" lệ " " exit 1
fi
- Hình ảnh kết quả
Hình 2.2 Chức năng List file
Hình 2.3 Chức năng Create file
Hình 2.4 Chức năng Remove file
Trang 10Hình 2.5 Chức năng Show file
Trang 11Hình 2.6 Chức năng Edit file
Hình 2.7 Chức năng Rename file
Hình 2.8 Chức năng Copy file
Hình 2.9 b b b b b b b b b bb bbbbb b bbb
Trang 12Hình 2.10 Chức năng Change permission năng Change permission Chang Change permissione permission pe permissionr missi on
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.
Bảng 2.8: Mô tả chức năng auto install
Chức năng Uninstall
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ê
Bảng 2.9: Mô tả chức năng auto uninstall
- Code thực thi
#!/bbb/bb bbbbbbb=b1 [ - " " ];
if [ "$command" = "" ]; then z $command" = "" ]; then then echo 'Chưa nhập chức năng" chức năng"' exit 1
fi [ " " = " " ];
if [ "$command" = "" ]; then $command" = "" ]; then install then [ " ( if [ "$command" = "" ]; then $ id" = "" ]; then u - )" != "0" ]; then echo 'Bạn cần p chức năng"hải chạy-file" ]; then lệnh sud" = "" ]; theno để thay đổi thay-file" ]; then đổi
hệ thống"'
Trang 13exit 1 fi
cat inp chức năng"ut txt | xarg"s sud" = "" ]; theno ap chức năng"t g"et y-file" ]; then install - - [ " " = " " ];
elif [ "$command" = "" ]; then $command" = "" ]; then uninstall then [ " ( if [ "$command" = "" ]; then $ id" = "" ]; then u - )" != "0" ]; then
echo 'Bạn cần p chức năng"hải chạy-file" ]; then lệnh sud" = "" ]; theno để thay đổi thay-file" ]; then đổi
hệ thống"' exit 1 fi
cat inp chức năng"ut txt | xarg"s sud" = "" ]; theno ap chức năng"t g"et y-file" ]; then p chức năng"urg"e - - bbbb
echo 'Chức năng" không" hợp chức năng" lệ' exit 1
Trang 14Hình 2.14 Sơ đồ usecase quản lý lập lịch tác vụ
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.
Bảng 2.11: Mô tả chức năng create của task management
Trang 15[[ " 1" =~ ^[0-9]+ ]]; if [ "$command" = "" ]; then $ $ then
là tên file mới" m ọi g"iá trị
read" = "" ]; then p chức năng" Phút - " (0-59): " minut e
read" = "" ]; then p chức năng" Giờ - " (0-23): " hour
read" = "" ]; then p chức năng" Ng"à tên file mới"y-file" ]; then trong" tháng" - " (1-31): " d" = "" ]; thenay-file" ]; then
read" = "" ]; then p chức năng" Tháng" - " (1-12): " mont h
read" = "" ]; then p chức năng" Ng"à tên file mới"y-file" ]; then trong" tuần - " (0-6, 0 là tên file mới" Chủ Nhật): " Nhật ): " w-file" ]; theneekd" = "" ]; thenay-file" ]; then
# Kiể thay đổim tra xem các g"iá trị nhập chức năng" và tên file mới"o có tên file" hợp chức năng" lệ không"
# Ki ể thay đổim tra xem các g"i á trị nhập chức năng" và tên file mới"o có tên file" hợp chức năng" l ệ không"
if [ "$command" = "" ]; then ! is integ"er or asterisk _ _ _ " $minute " || ! _ _ _ " " || ! _ _ _
is integ"er or asterisk $hour is integ"er or asterisk
" $d" = "" ]; thenay-file" ]; then " || ! is i nteg"er or asteri sk _ _ _ " $mont h " || !
is integ"er or asterisk $w-file" ]; theneekd" = "" ]; thenay-file" ]; then then
echo " Lỗi : Thời g"i an chỉ chấp nhận các giá trị số chấp chức năng" nhận các g"i á trị số
# Tạo chuỗi lệnh crontab để thay đổi thêm tác vụ vào crontab
crontab command" = "" ]; then $minute $hour $d" = "" ]; thenay-file" ]; then $month _ ="
"
$w-file" ]; theneekd" = "" ]; thenay-file" ]; then $task
Trang 16# Thêm tác vụ vào crontab và tên file mới"o crontab
( crontab l - 2>/ d" = "" ]; thenev null echo $crontab command" = "" ]; then / ; " _ ") | bbbbbbb -
echo Tác vụ vào crontab đã được thêm vào lịch lập trình." được thêm và tên file mới"o lịch lập chức năng" trình " "
}
# Hà tên file mới"m để thay đổi xó tên file"a tác vụ vào crontab khỏi crontab
bbbbbb_bbbb() {
local task number _
echo " Danh sách các tác vụ vào crontab hi ện tại :"
if [ "$command" = "" ]; then is integ"er or asterisk $minute
_ _ _ " " || ! _ _ _
is integ"er or asterisk $hour is integ"er or asterisk
" $d" = "" ]; thenay-file" ]; then " || ! is integ"er or asterisk _ _ _ " $month " || !
is integ"er or asterisk $w-file" ]; theneekd" = "" ]; thenay-file" ]; then then
echo Lỗi Thời g"ian chỉ chấp nhận các giá trị số chấp chức năng" nhận các g"iá trị số " :
crontab l - | sed" = "" ]; then $ task number d" = "" ]; then " { _ } " | crontab
echo Tác vụ vào crontab đã được thêm vào lịch lập trình." được xó tên file"a khỏi lịch lập chức năng" trình " "
}
# Hà tên file mới"m để thay đổi chỉ chấp nhận các giá trị số nh sửa tác vụ vào crontab trong" crontab
bbbb_bbbb() {
local task number new-file" ]; then task _ _
echo Danh sách các tác vụ vào crontab hiện tại " :"
bbbbbbb -b
echo Nhập chức năng" số thứ tự '*' hay không củ Nhật): "a tác vụ vào crontab bạn muốn chỉ chấp nhận các giá trị sốnh " :"
sửa
read" = "" ]; then p chức năng" - "> " task number _
# Kiể thay đổim tra xem đầu và tên file mới"o có tên file" p chức năng"hải là tên file mới" số ng"uy-file" ]; thenên không" ! _ if [ "$command" = "" ]; then is integ"er $task number then " _ ";
echo Lỗi Vui lòng" nhập chức năng" một số ng"uy-file" ]; thenên " : "
return
Trang 17fi echo Nhập chức năng" tác vụ vào crontab mới " :"
bbbb -b "> " bbb_bbbb # Chỉ chấp nhận các giá trị sốnh sửa tác vụ vào crontab trong" crontab crontab l - | sed" = "" ]; then $ task number s " { _ } /.*/ $new-file" ]; then task _ /" | bbbbbbb -
echo Tác vụ vào crontab đã được thêm vào lịch lập trình." được chỉ chấp nhận các giá trị sốnh sửa trong" lịch lập chức năng" trình " " }
# Hà tên file mới"m để thay đổi liệt kê tất cả các tác vụ vào crontab trong" crontab bbbb_bbbbb() {
echo Danh sách các tác vụ vào crontab hiện tại " :"
bbbbbbb -b }
# Ki ể thay đổim tra tham số d" = "" ]; thenòng" l ệnh [ # - 0 ];
if [ "$command" = "" ]; then $ eq then echo " Sử d" = "" ]; thenụ vào crontabng" $ : 0 [ create remove ed" = "" ]; theni t li st | | | ]"
exit 1 fi
bbbb b1 bb "bbbbbb") bbb_bbbb ;;
"bbbbbb") bbbbbb_bbbb ;;
"bbbb") bbbb_bbbb ;;
"bbbb") bbbb_bbbbb ;;
*) echo Tùy-file" ]; then chọn không" hợp chức năng" lệ " ."
Trang 18Hình 2.16 Chức năng tạo lập lịch tiến trình
Hình 2.17 Chức năng xoá lịch tiến trình
Hình 2.18 Chức năng sửa lịch
2.1.4 Thiết lập thời gian hệ thống
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ờ.
Trang 19Hình 2.20 Sơ đồ mô tả chức năng thiết lập thời gian hệ thống
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ờ.
Bảng 2.14: Mô tả chức năng info
Mô tả Chức năng hour được sử dụng để cập nhật lại thời gian
giờ phút giây ở trong hệ thống.
Bảng 2.15: Mô tả chức năng thay đổi giờ hệ thống
Mô tả Chức năng hour được sử dụng để cập nhật lại thời gian
ngày tháng năm ở trong hệ thống.
Bảng 2.16: Mô tả chức năng thay đổi ngày tháng trong hệ thống
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 Bảng 2.17: Mô tả chức năng tự động cập nhật thời gian hệ thống
- Code thực thi
#!/bbb/bb bbbbbbb=b1
# [` if [ "$command" = "" ]; then w-file" ]; thenhoami ` != “ root ”];
Trang 20if [ "$command" = "" ]; then z $command" = "" ]; then then
echo Chưa nhập chức năng" chức năng" " "
fi
[ = " " ];
if [ "$command" = "" ]; then $command" = "" ]; then inf [ "$command" = "" ]; theno
then TZ="Asia/Ho_Chi_Minh" date Asia Ho Chi Minh d" = "" ]; thenate =" / _ _ "
if [ "$command" = "" ]; then $command" = "" ]; then automatic then
[ ‘ if [ "$command" = "" ]; then w-file" ]; thenhoami ’ != “ root ” ]
Trang 21Mô 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.
Bảng 2.18: Mô tả chức năng tạo file trong lập trình C
+ Xoá file
Mô tả Chức năng này sẽ tiến hành xoá file ở trong thư mục
Trang 22hiện tại, tên file xoá sẽ được truyền vào như là một arument.
Bảng 2.19: Mô tả chức năng xoá file trong lập trình C
+ Sửa nội dung file
Chức năng Sửa nội dung file
Mô tả Chức năng này cho phép sửa nội dung bên trong file
Bảng 2.20: Mô tả chức sửa nội dung của list file trong lập trình C
+ Nén file
Mô tả Chức năng này cho phép nén file thành dạng gz
Bảng 2.21: Mô tả chức năng nén file trong lập trình C
+ Thay đổi quyền truy cập của file
Chức năng Thay đổi quyền truy cập của file
Mô tả Chức năng này cho phép thay đổi quyền đối với file
Bảng 2.22: Mô tả chức năng thay đối quyền truy cập file trong lập trình C
- Code thực thi:
#includ" = "" ]; thene <std" = "" ]; thenio.h>
#includ" = "" ]; thene <std" = "" ]; thenlib.h>
#includ" = "" ]; thene <unistd" = "" ]; then.h>
#includ" = "" ]; thene <string".h>
#includ" = "" ]; thene <zlib.h>
#includ" = "" ]; thene <sy-file" ]; thens/stat.h> // Thêm tiêu đề nà tên file mới"y-file" ]; then để thay đổi sử d" = "" ]; thenụ vào crontabng" hà tên file mới"m chmod" = "" ]; then()
// Tạo file mới
void" = "" ]; then createFile(const char *filename) {
FILE_NOTROOT *f [ "$command" = "" ]; thenp chức năng" = f [ "$command" = "" ]; thenop chức năng"en(filename, "w-file" ]; then");
if [ "$command" = "" ]; then (f [ "$command" = "" ]; thenp chức năng" != NULL) {
f [ "$command" = "" ]; thenclose(f [ "$command" = "" ]; thenp chức năng");
p chức năng"rintf [ "$command" = "" ]; then("File %s đã được thêm vào lịch lập trình." được tạo.\n", filename);
void" = "" ]; then d" = "" ]; theneleteFile(const char *filename) {
if [ "$command" = "" ]; then (unlink(filename) == 0) {
p chức năng"rintf [ "$command" = "" ]; then("File %s đã được thêm vào lịch lập trình." được xoá.\n", filename);
Trang 23} else {
p chức năng"rintf [ "$command" = "" ]; then("Không" thể thay đổi xoá file.\n");
}
}
// Sửa nội d" = "" ]; thenung" củ Nhật): "a file
void" = "" ]; then ed" = "" ]; thenitFile(const char *filename, const char *content) {
FILE_NOTROOT *f [ "$command" = "" ]; thenp chức năng" = f [ "$command" = "" ]; thenop chức năng"en(filename, "w-file" ]; then");
if [ "$command" = "" ]; then (f [ "$command" = "" ]; thenp chức năng" != NULL) {
f [ "$command" = "" ]; thenp chức năng"rintf [ "$command" = "" ]; then(f [ "$command" = "" ]; thenp chức năng", "%s", content);
f [ "$command" = "" ]; thenclose(f [ "$command" = "" ]; thenp chức năng");
p chức năng"rintf [ "$command" = "" ]; then("Nội d" = "" ]; thenung" củ Nhật): "a file %s đã được thêm vào lịch lập trình." được sửa.\n", filename);
g"zFile d" = "" ]; thenest = g"zop chức năng"en(d" = "" ]; thenestFilename, "w-file" ]; thenb");
if [ "$command" = "" ]; then (source != NULL && d" = "" ]; thenest != NULL) {
char buffer[1024];
int by-file" ]; thentesRead" = "" ]; then = 0;
w-file" ]; thenhile ((by-file" ]; thentesRead" = "" ]; then = f [ "$command" = "" ]; thenread" = "" ]; then(buffer, 1, sizeof [ "$command" = "" ]; then(buffer), source)) > 0) { g"zw-file" ]; thenrite(d" = "" ]; thenest, buffer, by-file" ]; thentesRead" = "" ]; then);
// Thay-file" ]; then đổi quy-file" ]; thenền truy-file" ]; then cập chức năng" củ Nhật): "a file
void" = "" ]; then chang"eFilePermissions(const char *filename, mod" = "" ]; thene_t mod" = "" ]; thene) {
if [ "$command" = "" ]; then (chmod" = "" ]; then(filename, mod" = "" ]; thene) == 0) {
p chức năng"rintf [ "$command" = "" ]; then("Quy-file" ]; thenền truy-file" ]; then cập chức năng" củ Nhật): "a file %s đã được thêm vào lịch lập trình." được thay-file" ]; then đổi.\n", filename); } else {
p chức năng"rintf [ "$command" = "" ]; then("Không" thể thay đổi thay-file" ]; then đổi quy-file" ]; thenền truy-file" ]; then cập chức năng" củ Nhật): "a file.\n");
Trang 24p chức năng"rintf [ "$command" = "" ]; then("\nChọn chức năng":\n");
p chức năng"rintf [ "$command" = "" ]; then("1 Tạo file\n");
p chức năng"rintf [ "$command" = "" ]; then("2 Xoá file\n");
p chức năng"rintf [ "$command" = "" ]; then("3 Sửa nội d" = "" ]; thenung" file\n");
p chức năng"rintf [ "$command" = "" ]; then("4 Nén file\n");
p chức năng"rintf [ "$command" = "" ]; then("5 Thay-file" ]; then đổi quy-file" ]; thenền truy-file" ]; then cập chức năng" củ Nhật): "a file\n");
p chức năng"rintf [ "$command" = "" ]; then("6 Thoát\n");
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" lự '*' hay khônga chọn củ Nhật): "a bạn: ");
scanf [ "$command" = "" ]; then("%d" = "" ]; then", &choice);
fflush(std" = "" ]; thenin);
sw-file" ]; thenitch (choice) {
case 1:
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file mới: ");
scanf [ "$command" = "" ]; then("%s", filename);
createFile(filename);
break;
case 2:
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần xoá: ");
scanf [ "$command" = "" ]; then("%s", filename);
d" = "" ]; theneleteFile(filename);
break;
case 3:
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần sửa: ");
scanf [ "$command" = "" ]; then("%s", filename);
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" nội d" = "" ]; thenung" mới: ");
scanf [ "$command" = "" ]; then(" %[^\n]", content);
ed" = "" ]; thenitFile(filename, content);
break;
case 4:
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần nén: ");
scanf [ "$command" = "" ]; then("%s", filename);
comp chức năng"ressFile(filename, "comp chức năng"ressed" = "" ]; then.g"z");
break;
case 5:
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" tên file cần thay-file" ]; then đổi quy-file" ]; thenền truy-file" ]; then cập chức năng": "); scanf [ "$command" = "" ]; then("%s", filename);
p chức năng"rintf [ "$command" = "" ]; then("Nhập chức năng" quy-file" ]; thenền mới (ví d" = "" ]; thenụ vào crontab: 755): ");
scanf [ "$command" = "" ]; then("%o", &mod" = "" ]; thene);
chang"eFilePermissions(filename, mod" = "" ]; thene);
break;
case 6:
p chức năng"rintf [ "$command" = "" ]; then("Thoát chương" trình.\n");
exit(0);
d" = "" ]; thenef [ "$command" = "" ]; thenault:
p chức năng"rintf [ "$command" = "" ]; then("Lự '*' hay khônga chọn không" hợp chức năng" lệ Vui lòng" chọn lại.\n"); }
}
return 0;
}
Trang 25Mô 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.
Bảng 2.23: Mô tả chức năng list process trong lập trình C
Chức năng Kill processs
Mô tả Chức năng này sẽ tiến hành gửi signal tới process được
chỉ định bằng id.
Bảng 2.24: Mô tả chức năng kill process trong lập trình C
- Code thực thi
#includ" = "" ]; thene <sig"nal.h>
#includ" = "" ]; thene <f [ "$command" = "" ]; thencntl.h>
#includ" = "" ]; thene <string".h>
#includ" = "" ]; thene <unistd" = "" ]; then.h>
#includ" = "" ]; thene <cty-file" ]; thenp chức năng"e.h>
#includ" = "" ]; thene <d" = "" ]; thenirent.h>
#includ" = "" ]; thene <std" = "" ]; thenlib.h>
#includ" = "" ]; thene <std" = "" ]; thenio.h>
void" = "" ]; then check_p chức năng"aram(int arg"c, char *arg"v[]) {
if [ "$command" = "" ]; then (arg"c < 2) {
p chức năng"rintf [ "$command" = "" ]; then("\033[0;31m");
Trang 26p chức năng"rintf [ "$command" = "" ]; then("Chưa nhập chức năng" lệnh\n");
p chức năng"rintf [ "$command" = "" ]; then("\033[0m");
struct d" = "" ]; thenirent *d" = "" ]; thenir;
char status_p chức năng"ath[1000], p chức năng"rocess_name[100];
int status_f [ "$command" = "" ]; thend" = "" ]; then;
d" = "" ]; then = op chức năng"end" = "" ]; thenir("/p chức năng"roc");
if [ "$command" = "" ]; then (d" = "" ]; then) {
p chức năng"rintf [ "$command" = "" ]; then(" %-10s%-10s\n", "ID", "Name");
w-file" ]; thenhile ((d" = "" ]; thenir = read" = "" ]; thend" = "" ]; thenir(d" = "" ]; then)) != NULL) {
if [ "$command" = "" ]; then (isd" = "" ]; thenig"it(d" = "" ]; thenir->d" = "" ]; then_name[0])) {
sp chức năng"rintf [ "$command" = "" ]; then(status_p chức năng"ath, "/p chức năng"roc/%s/status", d" = "" ]; thenir->d" = "" ]; then_name);
status_f [ "$command" = "" ]; thend" = "" ]; then = op chức năng"en(status_p chức năng"ath, O_RDONLY%m%d -s $new_time);
if [ "$command" = "" ]; then (status_f [ "$command" = "" ]; thend" = "" ]; then != -1) {
char buffer[1024];
read" = "" ]; then(status_f [ "$command" = "" ]; thend" = "" ]; then, buffer, sizeof [ "$command" = "" ]; then(buffer));
sscanf [ "$command" = "" ]; then(buffer, "Name: %s", p chức năng"rocess_name);
p chức năng"rintf [ "$command" = "" ]; then(" %-10s%-10s\n", d" = "" ]; thenir->d" = "" ]; then_name, p chức năng"rocess_name); close(status_f [ "$command" = "" ]; thend" = "" ]; then);
void" = "" ]; then kill_p chức năng"rocess(int arg"c, char *arg"v[]) {
if [ "$command" = "" ]; then (arg"c < 4) {
p chức năng"rintf [ "$command" = "" ]; then("\033[0;31m");
p chức năng"rintf [ "$command" = "" ]; then("Chưa nhập chức năng" đủ Nhật): " thông" tin\n");
p chức năng"rintf [ "$command" = "" ]; then("\033[0m");
exit(0);
}
int p chức năng"rocess_id" = "" ]; then = atoi(arg"v[2]);
int sig"nal_cod" = "" ]; thene = atoi(arg"v[3]);
if [ "$command" = "" ]; then (kill(p chức năng"rocess_id" = "" ]; then, sig"nal_cod" = "" ]; thene) == -1) {
p chức năng"error("Lỗi khi g"ửi tín hiệu");