2. Ch動董ng 4: Nh畉p m担n l畉p tr狸nh Linux Bao g畛m c叩c ph畉n sau: Linux v Unix C畛ng 畛ng GNU v General Public License L畉p tr狸nh tr棚n Linux Ch動董ng tr狸nh Unix v Linux Ch動董ng tr狸nh Linux 畉u tay helloworld.c T狸m tr畛 gi炭p v畛 tr狸nh bi棚n d畛ch Ph叩t tri畛n ch動董ng tr狸nh v畛i ng担n ng畛 C Th動 vi畛n li棚n k畉t tr棚n Linux CITD - VNUHCM
3. 4.1. Linux v Unix Unix 動畛c 叩nh gi叩 l m畛t HH m畉nh, 畛n 畛nh. Tr動畛c 但y 動畛c xem l m畛t HH m達 ngu畛n m畛 v t畛 khi Sun Microsystems n但ng c畉p l棚n thnh m畛t s畉n ph畉m th動董ng m畉i m畉t d畉n t鱈nh m畛 c畛a HH Unix. C叩c d嘆ng s畉n ph畉m Server c畛a Microsoft 達 v ang c畉nh tranh v畛i c叩c d嘆ng t動董ng 動董ng thu畛c h畛 UNIX (nh動 FreeBSD, Linux, Debian, SCO Unix,) Theo d嘆ng l畛ch s畛 th狸 v畛i vi畛c k畉 th畛a v ph叩t huy nh畛ng t鱈nh nng n畛i b畉t c畛a m畛t HH 達 qua th畛 th叩ch - UNIX { m達 ngu畛n m畛 + t鱈nh 畛n 畛nh } Linux 達 動畛c 畛ng h畛 v 動畛c s畛 d畛ng b畛i c畛ng 畛ng tr棚n ton th畉 gi畛i
4. M畛t s畛 t鱈nh nng kh叩c c畛a HH Linux so v畛i HH Unix : L h畉t nh但n cung c畉p c叩c ch畛c nng c畉n thi畉t t畛i thi畛u c畛a HH t畛a Unix ( Linux gi畛ng Unix g畉n 98% ) L m畛t s畉n ph畉m c坦 gi叩 tr畛 do Unix kh担ng c坦 phi棚n b畉n ch畉y tr棚n h畛 m叩y PC v畛i ki畉n tr炭c Intel
29. Ch動董ng 5: X畛 l箪 t畉p tin v th動 m畛c Bao g畛m c叩c ph畉n sau: H畛 th畛ng t 畉p tin trong Linux C叩c c叩ch x畛 l箪 t畉p tin trong Linux Th動 vi畛n xu畉t nh畉p chu畉n (Standard I/O Library) Hm truy xu畉t c畉p th畉p X畛 l箪 th動 m畛c CITD - VNUHCM
30. 5.1. H畛 th畛ng t畉p tin trong Linux T畉t c畉 c叩c t畉p tin v th動 m畛c 動畛c t畛 ch畛c theo d畉ng c但y duy nh畉t G畛c c畛a c但y th動 m畛c g畛i l root v 動畛c k箪 hi畛u l / Cho d湛 m叩y t鱈nh c坦 nhi畛u 畛 挑a (ho畉c nhi畛u ph但n v湛ng, nhi畛u thi畉t b畛) t畉t c畉 動畛c k畉t g叩n vo c叩c nh叩nh c畛a c但y th動 m畛c ch鱈nh Thao t叩c k畉t g叩n 動畛c th畛c hi畛n b畛i l畛nh mount H狸nh 5-1 cho th畉y th動 m畛c /home/soft l th動 m畛c 動畛c g叩n k畉t v畛i m畛t ph但n v湛ng c畛a 挑a c畛ng th畛 2
31. - Th畛c t畉, th動 m畛c trong Linux 動畛c xem nh動 m畛t t畉p tin c坦 thu畛c t鱈nh d . H狸nh 5.1 H畛 th畛ng th動 m畛c trong Linux 挑a c畛ng 1 挑a c畛ng 2 usr etc home dev minhkhai soft book.doc office helps.txt
36. 5.3.1. 坦ng m畛 t畉p tin - S畛 d畛ng hm fopen() v fclose() - V鱈 d畛: /*Khai b 叩 o c 叩c b i畉 n con tr 畛 t 畛i c 畉 u tr 炭 c FILE*/ FILE * f_read; FILE * f_write; FILE * f_readwrite; FILE * f_append; /*M 畛 t 畉p tin data.txt 畛 畛 c*/ f_read=fopen(/home/ch12/data.txt, r); if (!f_read) { /*Kh 担 ng m 畛 動畛 c t 畉p tin */ perror(Khong mo duoc file de doc...); exit (1); }
37. /* M 畛 t 畉p tin logfile trong th 動 m 畛 c hi 畛n h nh 畛 ghi. N 畉 u ch 動a c坦, t 畉p tin m畛i 動畛c t畉o; N 畉 u 達 c坦, n 畛i dung c滴 b畛 x坦a */ f_write=fopen(logfile.txt, w); /* M 畛 /usr/local/db/users 畛 畛c v ghi */ f_readwrite=fopen(/usr/local/db/users, rw); /* M 畛 /var/adm/messages 畛 n畛i th棚m d畛 li畛u vo cu畛i */ f_append=fopen(/var/adm/messages, a); /* 坦ng t畉p tin ang m畛 */ if (!fclose(f_readwrite)) { perror(Khong the dong file duoc...); exit (1); }
38. 5.3.2. 畛c t畛 t畉p tin - Sau khi m畛 t畉p tin v c坦 con tr畛 畉n c畉u tr炭c FILE, c坦 th畛 th畛c hi畛n vi畛c 畛c d畛 li畛u b畉ng nhi畛u hm th動 vi畛n. - V鱈 d畛: int c; char buf[200]; c=fgetc(f_read); // 畛c 1 k箪 t畛 ho畉c 動畛c EOF if (fread(buf, 120, 1, f_read) != 1) { // 畛c 1 kh畛i k箪 t畛 perror(Kh担ng 畛c 動畛c !); } if (feof(f_read)){ printf(G畉p EOF !); }
39. 5.3.3. Ghi vo t畉p tin - Gi畉 s畛 f_readwrite l con tr畛 畉n c畉u tr炭c FILE 達 動畛c fopen() v畛i ch畉 畛 ghi l w. - V鱈 d畛: int c; char buf[201]; // Ghi k箪 t畛 a ra t畉p tin c=a; fputc(f_readwrite); // Ghi m畛t chu畛i k箪 t畛 ra t畉p tin strcpy(buf, Hello World !); fputs(buf, f_readwrite); // 畉y d畛 li畛u c嘆n l畉i trong v湛ng 畛m ra t畉p tin fflush(f_readwrite);