1. BÀI TẬP THỰC HÀNH MÔN
KỸ THUẬT LẬP TRÌNH TRÊN UNIX
Người biện soạn: GV Ngô Thị Vinh
Bộ môn: THVT- Khoa CNTT&TT
A. BÀI TẬP VỀ THỰC HIỆN LỆNH TRÊN SHELL
Bài 1: Đăng nhập vào hệ thống và mở file /etc/passwd từ giao diện đồ họa để xem
danh sách các người dùng trong hệ thống.
a. Đọc các thông tin về mỗi người dùng trong hệ thống trên file /etc/passwd bao gồm:
username:password:userId:groupId:comment:homedir:startup.
Khởi động shell bash và thực hiện các công việc:
a: Chuyển sang tài khoản root bằng lệnh:
$ su root
nhập mật khẩu cho tài khoản root (trên phòng máy mật khẩu root được thiết lập là
123456). Lúc này dấu nhắc shell chuyển thành #.
b: Xem danh sách các nhóm trong hệ thống bằng lệnh cat:
$ cat /etc/group
- Quan sát thông tin của từng nhóm trên mỗi dòng gồm 4 trường.
c: Thêm các nhóm người dùng có tên Nhom1 và Nhom2 vào hệ thống, trong đó
Nhom1 thuộc nhóm người dùng hệ thống (có groupid < 499).
d: Thay đổi tên nhóm nhóm người dùng Nhom1 thành admin_group.
e. Thêm một người dùng Hung với các tùy chọn: chú thích (comment) “Nguyen Manh
Hung”, thư mục làm việc “/home/Hung”, ngày hết hiệu lực của tài khoản (ngày mà tài
khoản sẽ bị hủy bỏ) là 15/06/2010, ngày mật khẩu hết hiệu lực trước khi người dùng
bị hủy bỏ khỏi hệ thống: 20, nhóm khởi tạo của người dùng là admin_group.
f: Thêm người dùng Hung vừa tạo vào nhóm Nhom2.
g. Thiết lập mật khẩu cho tài khoản Hùng vừa tạo là hung123.
h. Logout khỏi hệ thống rồi đăng nhập và tài khoản Hung vừa tạo.
i. Chuyển sang tài khoản root bằng lệnh su root, rồi thay đổi tài khoản Hung thành
manhhung.
k. Xóa Nhom2 (chú ý đảm bảo không có user nào thuộc vào nhóm này).
1
2. l. Xóa tài khoản ManhHung khỏi hệ thống.
Bài 2: Khởi động máy đăng nhập vào hệ thống Linux, khởi động shell bash rồi
thực hiện các công việc sau:
a. Xem đường dẫn đến thư mục hiện hành dùng lệnh pwd
b. Dùng lệnh ls để xem danh sách các file trong thư mục hiện hành
- Lệnh ls không có tham số:
$ls
- Lệnh ls với tham số -l để quan sát thông tin chi tiết về từng file hoặc thư mục và cho
biết: kiểu file (là file thông thường hay file thư mục), các quyền truy cập của chủ sở
hữu, nhóm và người dùng khác đối với file, tên chủ sở hữu, tên nhóm sở hữu, số liên
kết đến file, kích thước, ngày,giờ tạo file
$ls –l
c. Thay đổi quyền truy cập của chủ sở hữu, nhóm và người dùng khác đối với một thư
mục/file bằng các lệnh chmod. Thí dụ đối với thư mục Music trong thư mục thư mục
hiện hành:
(chú ý sau mỗi lệnh dùng lệnh ls –l để quan sát sự thay đổi vừa thiết lập đối với thư
mục hoặc file vừa thao tác)
$ chmod u=rwx Music
$ chmod u-x,go=rx Music
$ chmod u=rw,g=r,o=rx Music
$ chmod u+x,g+x,r-x Music
$ chmod = Music (hủy tất cả các quyền)
hoặc sử dụng trong chế độ biểu tượng:
$ chmod 0664 Music
$ chmod 0777 Music
$ chmod 0000 Music
$ chmod 764 Music Download
d. Tạo ra một file vd1 trong thư mục Music
$ cat > vd1.txt
- Dùng lệnh chmod thiết lập quyền cho toàn bộ file và thư mục con của thư mục
Music:
2
3. $ chmod –R 640 Music
- Quan sát sự thay đổi trên file Music/vd1.txt
$ ls –l Music/vd1.txt
e. Làm tương tự đối với các file và thư mục khác.
Bài 3: Thay đổi chủ sở hữu đối với file/thư mục
a. Tạo một thư mục mới dir1 trong thư mục /home (dùng lệnh mkdir /home/dir1)
b. Dùng lệnh ls –l để xem chủ sở hữu và nhóm sở hữu của thư mục dir1 vừa tạo.
c. Chuyển sang tài khoản root sử dụng lệnh su.
d. Thiết lập chủ sở hữu của thư mục dir1 là root và nhóm sở hữu của dir1 là root.
e. Xem chủ sở hữu và nhóm sở hữu của dir1 bằng lệnh ls.
f. Tạo ra một nhóm người dùng hệ thống (có id <499) có tên group1.
g. Thiết lập nhóm chính sở hữu dir1 là group1 bằng lệnh chgrp.
Bài 4: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Xem thông tin về phiên bản của nhân hệ điều hành bằng lệnh uname với các tùy
chọn khác nhau như –a và -r.
b. Xem các runlevel của hệ thống được thiết lập sẵn trong file /etc/inittab bằng lệnh
cat /etc/inittab.
c. Khởi động lại hệ thống bằng lệnh init 6.
d. Xem dung lượng các ổ đĩa trong hệ thống bằng lệnh df.
e. Xem dung lượng đĩa được sử dụng cho từng file và thư mục trong thư mục hiện
hành với các tùy chọn khác nhau –h, -s hoặc kết hợp cả hai –hs.
f. Tắt hệ thống sau 10 phút và đưa ra lời cảnh báo “He thong chuan bi shutdown sau
10 phut”.
g. Nhấn Ctrl+C để hủy bỏ quá trình shutdown hệ thống.
h. Đưa ra lời cảnh báo tắt hệ thống sau 15 phút (nhưng không tắt thật sự).
i. Khởi động lại hệ thống ngay lập tức sử dụng lệnh shutdown với tùy chọn –r.
Bài 5: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Xem nội dung biến PS1 và PS2 lưu trữ các dấu nhắc hệ thống sử dụng lệnh echo
$PS1 và echo $PS2.
3
4. b. Thiết lập địa chỉ ip cho máy trên cổng Ethernet sử dụng lệnh:
ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up
Bài 6: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Xem shell hệ hành của hệ thống (echo $SHELL).
b. Dùng lệnh echo để xem giá trị của các biến môi trường HOME, PATH, PWD,
USER.
c. Gán giá trị cho biến môi trường PS2 (lưu trữ dấu nhắc nhập liệu) là !, rồi dùng lệnh
echo để xem giá trị $PS2 vừa gán.
d. Xem thư mục hiện hành bằng lệnh pwd
e. Dùng lệnh ls với tùy chọn –a xem danh sách các file và thư mục trong thư mục hiện
hành bao gồm cả file ẩn.
f. Dùng lệnh ls với tùy chọn –l xem thông tin đầy đủ về danh sách các file và thư mục
trong thư mục hiện hành.
Bài 7: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo thư mục MonToan trong thư mục hiện hành sử dụng lệnh mkdir
b. Tạo các thư mục bai1, bai2 trong thư mục MonToan.
c. Đổi tên thư mục bai2 trên thành thư mục bai21.
d. Xem nội dung của thư mục MonToan.
e. Xóa thư mục bai1, bai21 và thư mục MonToan vừa tạo trên.
Bài 8: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo thư mục BaiTap trong thư mục hiện hành (/home/ubuntu).
b. Tạo file vd1.txt sử dụng lệnh touch trong thư mục BaiTap
c. Ghi kết quả đầu ra của lệnh ls đối với thư mục hiện hành và file vd1.txt.
d. Đổi tên file vd1.txt thành file vd2.txt.
e. Tạo ra file vd3.txt trong thư mục BaiTap bằng cách sử dụng lệnh cat > và nhập vào
nội dung sau:
This is my example
My name is Mr Minh
4
5. I’m a student.
nhấn ctrl+D để kết thúc việc nhập.
f. Tạo mới thư mục BT trong thư mục hiện hành.
g. Tạo một file file1.txt trong thư mục BaiTap.
h. Sao các file bắt đầu bằng vd trong thư mục BaiTap sang thư mục BT.
i. Xóa file vd2.txt trong thư mục BT.
k. Đếm số ký tự, số từ, số dòng trong file vd3.txt sử dụng lệnh wc
Bài 9: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành
b. Chuyển thư mục dir2 vào trong thư mục dir1 (sử dụng lệnh mv).
c. Tạo thư mục dir3 trong thư mục dir2
d. Thực hiện xóa cây thư mục dir1/dir2/dir3
Bài 10: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo một file bai1.txt trong thư mục hiện hành (sử dụng lệnh cat) rồi nhập vào nội
dung:
De thuc hien sao chep noi dung cua 2 file trong Linux can su dung lenh cp voi
2 tham so la file nguon va file dich. Trong truong hop tham so thu nhat là file
nguon va tham so thu 2 la thu muc thi lenh cp se thuc hien sao chep file nguon
vao thu muc da chi dinh o tham so thu 2.
b. Tạo một file bai2.txt trong thư mục hiện hành.
c. Sao chép nội dung của file bai1.txt sang file bai2.txt
d. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành
e. Sao chép 2 file bai1.txt và file bai2.txt vào thư mục dir1
f. Sao chép tất cả các file có đuôi .txt vào trong thư mục dir2
g. Xóa tất cả các file có đuôi .txt trong thư mục hiện hành.
h. Đếm số lượng file và thư mục trong thư mục hiện hành sử dụng lệnh ls kết hợp với
lệnh wc với tùy chọn –l.
Bài 11: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
5
6. a. Tạo một file bai11.txt trong thư mục hiện hành và nhập vào nội dung sau đây:
aa
aa
bb
bb
cc
b. Xem nội dung file bai11.txt bằng cách loại bỏ các dòng trùng lặp bằng lệnh uniq.
c. Ghi nội dung của file bai11.txt gồm các dòng không trùng lặp vào một file
bai111.txt
d. Tạo một file bai112.txt nhập vào nội dung sau:
cc
aa
dd
bb
e. Sắp xếp nội dung của file bai112.txt theo thứ tự abc mà không phân biệt chữ hoa
chữ thường.
f. Xem danh các file và thư mục trong thư mục hiện hành theo thứ tự bảng chữ cái
bằng cách sử dụng kết hợp lệnh ls với lệnh sort.
Bài 12: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các
công việc sau:
a. Tạo một file vd1.txt và nhập vào nội dung tùy ý.
b. Xem kiểu nội dung của file vd1.txt
c. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file
được hiển thị ra (sử dụng lệnh cat -n).
d. Xem nội dung của file /etc/passwd theo từng trang màn hình bằng cách sử dụng
lệnh more.
e. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file
được hiển thị ra màn hình bằng cách sử dụng lệnh nl, sau đó ghi kết quả này vào một
file vd2.txt.
f. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng khác trống
của file được hiển thị ra màn hình bằng cách sử dụng lệnh nl.
6
7. g. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng trống của file
được hiển thị ra màn hình bằng cách sử dụng lệnh nl.
h. Xem 3 dòng đầu tiên của file vd1.txt (lệnh head).
i. Xem 3 dòng cuối cùng của file vd1.txt (lệnh tail).
j. Xem 3 dòng đầu tiên của 2 file vd1.txt và vd2.txt, 3 dòng thuộc file vd2.txt được
hiển thị tiếp theo sau 3 dòng của file vd1.txt.
k. Tìm sự khác nhau giữa 2 file vd1.txt và vd2.txt (lệnh diff).
l. Tìm kiếm các dòng có chứa xâu “aa” trong file vd1.txt.
m. Tìm kiếm các dòng trong file vd1.txt mà không bắt đầu bởi kí tự a hoặc b.
n. Tìm kiếm các dòng trong file vd1.txt mà bắt đầu bởi kí tự a hoặc b.
o. Tìm kiếm file có tên vd1.txt trong thư mục hiện hành.
B. BÀI TẬP VỀ SHELL SCRIPT
1. Cấu hình ssh trên linux để cho phép chia sẻ dữ liệu với windows qua giao thức FTP.
2. Viết kịch bản shell script cho phép tạo tài khoản người dùng mới có username là $1
và password được nhập vào từ bàn phím.
3. Viết kịch bản shell script cho phép in ra màn hình số lượng và tên của các user và
các group có trong hệ thống.
4. Viết kịch bản shell script cho biết một user được truyền vào là $1 thuộc những
nhóm nào trong hệ thống, in ra màn hình danh sách các nhóm.
5. Viết kịch bản shell script cho phép tìm kiếm một file có tên được truyền vào là $1
trong thư mục có tên được truyền vào là $2. In ra màn hình dòng thông báo có tìm
thấy hoặc không tìm thấy.
6. Viết kịch bản shell script cho phép ghép nội dung của file A với nội dung của file B
theo từng dòng tương ứng, tức dòng 1 ở file A ghép với dòng 1 ở file B và được cách
nhau một dấu cách.
7. Viết kịch bản shell script cho phép thay đổi quyền truy nhập của một file có tên
được truyền vào là $1 và quyền là $2. Chương trình thông báo lỗi nếu thay đổi không
thành công.
8. Viết kịch bản cho phép thay đổi chủ sở hữu của một file có tên được truyền vào là
$1 và chủ sở hữu mới là $2. Chương trình thông báo lỗi nếu thay đổi không thành
công.
7
8. 9. Viết kịch bản cho phép thay đổi mật khẩu của một người dùng có tên được truyền
vào là $1 và mật khẩu được nhập vào từ bàn phím. Thông báo lỗi nếu thay đổi không
thành công.
10. Viết kịch bản shell script cho thép thay đổi nhóm sở hữu chính đối với một file có
tên được truyền vào là $1 và tên nhóm sở hữu mới là $2.
11. Viết kịch bản shell script cho phép đếm số lượng thư mục con và số lượng các file
trong thư mục hiện hành. In kết quả ra màn hình.
12. Viết kịch bản shell script cho phép xem thông tin về không gian bộ nhớ đã được
sử dụng trong bộ nhớ của hệ thống.
13. Viết kịch bản shell script cho phép xem dung lượng của một file được truyền vào
là $1.
14. Viết kịch bản shell script cho phép tìm kiếm các file .txt bắt đầu bằng ‘D’ hoặc ‘d’
và kết thúc bằng ‘c’ hoặc ‘C’ trong thư mục hiện hành và danh sách tìm được ra màn
hình.
15. Viết kịch bản shell script cho phép tìm kiếm các file .doc bắt đầu bằng ‘A’ hoặc
‘B’ hoặc ‘C’ và kết thúc bằng ‘1’ trong thư mục hiện hành, in danh sách các file ra
màn hình.
16. Viết kịch bản shell script cho phép đếm số lượng và in ra màn hình danh sách các
file ẩn trong thư mục hiện hành.
17. Viết kịch bản shell script cho xóa một người dùng khỏi hệ thống, đồng thời xóa bỏ
cả thư mục làm việc của người dùng đó với tên user được truyền vào là $1.
18. Viết kịch bản cho xóa một nhóm người dùng khỏi hệ thống có tên được truyền vào
$1, kiểm tra đảm bảo không có người dù ng nào trong hệ thống có nhóm sở hữu chính
là nhóm cần xóa; Ngược lại thông báo là “Đây là nhóm sở hữu chính của một hoặc
nhiều user khác” hoặc thông báo lỗi nếu nhóm này không tồn tại.
19. Viết kịch bản shell script cho biết kiểu một file có tên được truyền vào là $1 là
kiểu gì (pipe, file thông thường, file thư mục, …. )?
20. Viết kịch bản shell script cho phép đếm và in ra màn hình số lượng các user đang
đăng nhập vào hệ thống.
21. Viết kịch bản shell script cho phép đếm số lượng tiến trình trong hệ thống.
8
9. 22. Viết kịch bản shell script cho phép xóa một thư mục không rỗng có tên được
truyền vào là $1, thông báo lỗi nếu thư mục không tồn tại.
23. Viết kịch bản shell script cho phép đổi tên một thư mục có tên được truyền là $1
và tên mới là $2, chương trình thông báo lỗi nếu tên mới là tên của một thư mục đã
tồn tại hoặc thư mục cần đổi tên không tồn tại.
24. Viết kịch bản shell script cho phép copy nội dung của một thư có tên được truyền
vào $1 sang thư mục mới có tên là $2.
25. Viết kịch bản shell script cho phép sao chép từ dòng thứ x được truyền là $3 đến
dòng thứ y được truyền là $4 từ một file có tên được truyền vào là $1 sang một file có
tên đươcn truyền vào là $2
26. Viết kịch bản shell script cho phép sao chép tất cả các file .txt bắt đầu bằng ‘f’
hoặc ‘F’ vào thư mục có tên MyFile trong thư mục hiện hành.
27. Viết kịch bản cho phép nhập vào một dãy các số nguyên cho đến khi người dùng
nhập vào ‘K’ khi có câu hỏi “Ban co nhap tiep (C/K)”. Lưu trữ dãy số này vào một
SoNguyen.txt mỗi số nguyên trên một dòng, tính tổng các số nguyên và ghi tổng này
vào dòng cuối cùng trong một file.
28. Viết kịch bản shell script cho phép thực hiện phép toán giữa hai toán hạng được
truyền vào là $1 và $2, với phép toán được truyền vào là $3.
29. Viết kịch bản shell script cho phép loại bỏ những dòng trùng lặp trong một file
được truyền vào $1và ghi kết quả sang một file khác được truyền vào là $2. Thống
báo lỗi nếu file trong $1 không tồn tại.
29. Viết kịch bản shell script cho phép sắp xếp nội dung của một file được truyền vào
$1 theo thứ tự vần ABC và ghi kết quả sang một file khác được truyền vào là $2.
Thống báo lỗi nếu file trong $1 không tồn tại.
30. Viết kịch bản shell script cho phép in ra màn hình nội dung của một file được
truyền vào $1 theo thứ tự từ dòng cuối cùng đến dòng đầu tiên. Chương trình thông
báo lỗi khi file được truyền vào không tồn tại.
31. Viết kịch bản shell script cho phép thiết lập thiết lập tiến trình tắt hệ thống sau 5
phút 30 giây chạy ở trạng thái background. Sau đó In ra màn hình danh sách các tiến
trình trong hệ thống, nhập vào id của tiến trình vừa tạo và dùng lệnh kill để hủy tiến
trình này.
9
10. 32. Viết kịch bản shell script cho phép tính tích của các số được truyền vào từ kịch
bản. (thí dụ: gọi tên_kịch_bản 2 7 5 thì in ra kết quả là 70).
33. Viết kịch bản shell script cho phép tính giai thừa của một số nguyên được vào là
$1.
34. Viết chương trình C tạo ra 2 tiến trình. Tiến trình thứ nhất đọc từ file nhiều chuỗi
liên tiếp, mỗi chuỗi gồm các phép toán +, -, *, / và hai toán hạng.
Thí dụ trong file sẽ lưu các chuỗi dạng như sau :
2+3
1 -2
4 *6
15 / 3
Sau đó tiến trình thứ nhất truyền các chuỗi dữ liệu này cho tiến trình thứ hai. Tiến
trình thứ hai thực hiện tính toán và trả chuỗi kết quả về lại cho quá trình đầu tiên để
ghi lại vào file như sau:
2+3 =5
1 - 2 = -1
4 * 6 = 24
15 / 3 =5
35. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều
dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó quá trình
này gởi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ
tự tăng dần, đồng thời tính tổng của dãy đó và gởi dãy kết quả cùng với tổng tính được
tương ứng cho mỗi dãy về lại tiến trình P0. Khi này, P0 thực hiện ghi các dãy kết quả
vào lại file.
36. Viết chương trình C tạo một tiến trình bơ vơ.
37. Viết chương trình C để tạo ra một tiến trình Zombie
38. Viết chương trình C đọc vào 2 ma trận A & B từ file, sau đó dùng nhiều thread để
thực hiện việc nhân 2 ma trận này. Ghi ma trận kết quả ra một file khác.
39. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó
dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử
10
11. giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là
0) lên 1.
40. Viết chương trình C đọc vào một dãy A từ file, dùng 1 thread khác để sắp xếp dãy
theo thứ tự tăng dần và ghi kết quả vào một file khác.
41. Viết chương trình C đọc vào một ma trận (kích thước N*N) từ file, sau đó dùng n
thread để tính tổng của từng hàng trên ma trận (1 thread nếu tính tổng một hàng xong
có thể tính tổng của một hàng khác). Dùng một thread để thu thập các kết quả của các
thread kia và ghi vào một file kết quả.
42. Viết chương trình C cho phép thay đổi độ ưu tiên của một tiến trình (cụ thể là tiến
trình ps) trong hệ thống.
43. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGALRM đến tiến trình
hiện hành sau 5 giây.
44. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGSTOP đến tiến trình
hiện hành sau 5 giây
45. Viết chương trình C cài đặt một trình điều khiển tín hiệu alarmHandler() bằng
cách sử dụng tín hiệu signal, vòng lặp sẽ dừng lại cho đến khi nhận được một tín hiệu
SIGALRM.
46. Viết chương trình C cho phép được bảo vệ để chống lại tín hiệu SIGNINT.
47. Viết chương trình C cho phép thay đổi quyền sở hữu đối với một file được truyền
vào khi gọi thực thi.
48. Viết chương trình C cho phép thay đổi chủ sở hữu đối với một file được truyền
vào khi gọi thực thi.
49. Viết chương trình C cho phép thay đổi nhóm sở hữu đối với một file được truyền
vào khi gọi thực thi.
50. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy
số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến
trình thứ 2 thực hiện tính tổng của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình
1 thực hiện ghi kết quả này vào cuối file ban đầu.
51. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n
thread để tính tổng của từng cột trên ma trận. Dùng một thread để thu thập các kết quả
của các thread kia và ghi vào một file kết quả.
11
12. 52. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n
thread để tính tổng của từng hàng trên ma trận. Dùng một thread để thu thập các kết
quả của các thread kia và ghi vào một file kết quả
53. Viết chương trình C đọc vào một dãy số nguyên từ file, dùng 1 thread khác để sắp
xếp dãy theo thứ tự tăng dần và ghi kết quả vào một file khác.
54. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó
dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử
giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là
0) lên 1.
55. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma
trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác
để thực hiện việc nhân 2 ma trận này và ghi ma trận kết quả ra một file khác.
56. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều
dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình
này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện tính tổng của dãy đó và
gửi dãy kết quả về lại tiến trình P0. P0 thực hiện ghi các dãy kết quả vào lại file ban
đầu.
57. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình
con nhập vào các thông điệp và gửi cho tiến trình cha, tiến trình cha nhận các thông
điệp và in ra màn hình.
58. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình
cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng
dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.
59. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình
cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng
dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.
60. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều
dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình
này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ
tự tăng dần và gửi dãy kết quả sắp xếp về cho tiến trình P0. Khi này, P0 thực hiện ghi
các dãy kết quả vào một file khác.
12
13. 61. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy
số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến
trình thứ 2 thực hiện tính tích của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình
1 thực hiện ghi kết quả này vào cuối file ban đầu.
62. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma
trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác
để thực hiện tìm kiếm phần tử lớn nhất trên ma trận và ghi kết quả vào cuối file ban
đầu.
63. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma
trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác
để thực hiện việc trừ 2 ma trận này và ghi ma trận kết quả ra một file khác.
13