Tổng hợp bài tập về terminal
Bài 1: Tạo ra 2 tuyến phụ
+ Tuyến phụ thứ 1 xuất ra các số lẻ từ 1 – 10, mỗi lần xuất sẽ cách nhau thời gian 1s.
+ Tuyến phụ thứ 2 xuất ra các số chẵn từ 1 – 10, mỗi lần xuất sẽ cách nhau thời gian 1s.
Lưu ý: Khi dán vào chương trình thì cần thay dấu ” trong hàm printf.
#include<stdio.h> #include<pthread.h> int so = 1; void* sole() { while (so <= 9) { if (so % 2 != 0) { printf(“so le %d\n”, so); so++; } sleep(1); }pthread_exit(NULL); } void* sochan() { while (so <= 10) { if (so % 2 == 0) { printf(“so chan %d\n”, so); so++; } sleep(1); } pthread_exit(NULL); }int main() { pthread_t le, chan; pthread_create(&le, NULL, sole, NULL); pthread_create(&chan, NULL, sochan, NULL); while(so <=10){ printf(“..\n”); sleep(1); } return 0; } |
Biên dịch: gcc file.c -o tenfilemoi -lpthread
./tenfilemoi
Bài 2: Nhập mảng, xuất mảng và xuất các số nguyên tố trong mảng vừa đã nhập.
– Sử dụng thư viện liên kết động
//Ham nhap mang
void nhapmang(int a[], int n){ |
//Ham xuat mang
void xuatmang(int a[], int n){ |
//Ham kiem tra so nguyen to
int ktsnt(int n){ |
//Xuat so nguyen to trong mang
void xuatsnt(int a[], int n){ } |
//Ham tong ket lai
#include <stdio.h> |
Biên dịch:
gcc -c -fpic nhapmang.c xuatmang.c ktsnt.c xuatsnt.c
gcc shared nhapmang.o xuatmang.o ktsnt.o xuatsnt.o libfoo.so
gcc main.c -o bai2 -L. -lfoo
LD_LIBRARY_PATH=.:
export LD_LIBRARY_PATH
./bai2
Bài 3: Xuất ra các số từ 1 – 10 mỗi lần in cách nhau 1s, nếu trong quá trình thực hiện người dùng nhấn phím ctrl + z thì xuất ra hoten_mssv sau đó tiếp tục thực hiện chương trình.
#include <stdio.h> #include <signal.h> #include <unistd.h> void battinhieu(int tinhieu){ signal(SIGTSTP,battinhieu); printf(“\nnguyenvanthanh_123”); } int main(){ int i=1; signal(SIGTSTP,battinhieu); for(i=1; i<=10;i++){ printf(“\n%d”,i); sleep(1); } } |
Biên dịch: gcc file.c -o tenfilemoi
./tenfilemoi
Bài 4: Tạo ra đường ống 1 chiều đếm ký tự nhập được từ bàn phím.
#include <stdio.h> #include <unistd.h> void duongongcon(int duongong[]) { int c,dem; dem=0; close(duongong[1]); while((read(duongong[0],&c,1))>0) { dem++; if(toascii(putchar(c))==10) break; } printf(“\nso ki tu doc duoc la:%d”,dem-1); close(duongong[0]); } void duongongcha(int duongong[]) {int c; close(duongong[0]); while((c=getchar() )>0) { write(duongong[1],&c,1); } close(duongong[1]); } int main() { int duongong[2]; int pid; pipe(duongong); pid= fork(); switch(pid) { case 0: duongongcon(duongong); default: duongongcha(duongong); } return 0; } |
Biên dịch: gcc file.c -o tenfilemoi
./tenfilemoi
Bài 5: Viết chương trình nhập mảng, xuất mảng và liệt kê các số chẵn không chia hết cho 3. Chúng ta sẽ sử dụng thư viện liên kết tỉnh.
//Nhap mang
void nhapmang(int a[], int n){ } |
//Xuat mang
void xuatmang(int a[], int n){ |
//Liệt kê
void lietke(int a[], int n){ } } |
//Hàm main
#include <stdio.h> |
Biên dịch:
gcc -c nhapmang.c xuatmang.c lietke.c
ar cvr libfoo.a nhapmang.o xuatmang.o lietke.o
gcc main.c -o bai5 -L. -lfoo
./bai5