Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... ·...

34
Dongkun Shin Embedded Software Laboratory Sungkyunkwan University http://nyx.skku.ac.kr/ File I/O and Examples

Transcript of Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... ·...

Page 1: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

%POHLVO 4IJO&NCFEEFE�4PGUXBSF�-BCPSBUPSZ4VOHLZVOLXBO�6OJWFSTJUZIUUQ���OZY�TLLV�BD�LS�

'JMF�*�0�BOE�&YBNQMFT

Page 2: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• "�6OJY�GJMF�JT�B�TFRVFODF�PG�N CZUFT��#� �#� ������ �#L ������ �#N��• "MM�*�0�EFWJDFT�BSF�SFQSFTFOUFE�BT�GJMFT

– �EFW�TEB����� IBSE�EJTL�QBSUJUJPO– �EFW�UUZ����� UFSNJOBM

• &WFO�UIF�LFSOFM�JT�SFQSFTFOUFE�BT�B�GJMF– �EFW�LNFN LFSOFM�NFNPSZ�JNBHF�– �QSPD����������� LFSOFM�EBUB�TUSVDUVSFT

6OJY�'JMFT

Page 3: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• 3FHVMBS�GJMF– #JOBSZ�PS�UFYU�GJMF– 6OJY�EPFT�OPU�LOPX�UIF�EJGGFSFODF�

• %JSFDUPSZ�GJMF– "�GJMF�UIBU�DPOUBJOT�UIF�OBNFT�BOE�MPDBUJPOT�PG�PUIFS�GJMFT�

• %FWJDF�TQFDJBM�GJMFT– 5FSNJOBMT�DIBSBDUFS�TQFDJBM�BOE�EJTLT�CMPDL�TQFDJBM

• '*'0�OBNFE�QJQF– "�GJMF�UZQF�VTFE�GPS�JOUFS�QSPDFTT�DPNNVOJDBUJPO

• 4PDLFU– "�GJMF�UZQF�VTFE�GPS�OFUXPSL�DPNNVOJDBUJPO�CFUXFFO�QSPDFTTFT

6OJY�'JMF�5ZQFT

Page 4: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• $IBSBDUFSJTUJDT– 5IF�FMFHBOU�NBQQJOH�PG�GJMFT�UP�EFWJDFT�BMMPXT�UIF�LFSOFM�UP�FYQPSU�TJNQMF�JOUFSGBDF�DBMMFE�6OJY�*�0�– "MM�JOQVU�BOE�PVUQVU�JT�IBOEMFE�JO�B�DPOTJTUFOU�BOE�VOJGPSN�XBZ�ˑCZUF�TUSFBN˒

• #BTJD�6OJY�*�0�PQFSBUJPOT�TZTUFN�DBMMT���– 0QFOJOH�BOE�DMPTJOH�GJMFT

• open() BOE�close()– $IBOHJOH�UIF�DVSSFOU�GJMF�QPTJUJPO TFFL

• lseek() – 3FBEJOH�BOE�XSJUJOH�B�GJMF

• read() BOE�write()

6OJY�*�0

Page 5: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• 0QFOJOH�B�GJMF�JOGPSNT�UIF�LFSOFM�UIBU�ZPV�BSF�HFUUJOH�SFBEZ�UP�BDDFTT�UIBU�GJMF�0QFOJOH�'JMFT

• 3FUVSOT�B�TNBMM�JEFOUJGZJOH�JOUFHFS�GJMF�EFTDSJQUPS– fd == -1 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE

• &BDI�QSPDFTT�DSFBUFE�CZ�B�6OJY�TIFMM�CFHJOT�MJGF�XJUI�UISFF�PQFO�GJMFT�BTTPDJBUFE�XJUI�B�UFSNJOBM

0 TUBOEBSE�JOQVU1 TUBOEBSE�PVUQVU2 TUBOEBSE�FSSPS

Page 6: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• $MPTJOH�B�GJMF�JOGPSNT�UIF�LFSOFM�UIBU�ZPV�BSF��GJOJTIFE�BDDFTTJOH�UIBU�GJMF�

$MPTJOH�'JMFT

• $MPTJOH�BO�BMSFBEZ�DMPTFE�GJMF�JT�B�SFDJQF�GPS�EJTBTUFSJO�UISFBEFE�QSPHSBNT�NPSF�PO�UIJT�MBUFS• .PSBM��"MXBZT�DIFDL�SFUVSO�DPEFT �FWFO�GPS�TFFNJOHMZ�CFOJHO�GVODUJPOT�TVDI�BT�close()

Page 7: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• 3FBEJOH�B�GJMF�DPQJFT�CZUFT�GSPN�UIF�DVSSFOU�GJMF�QPTJUJPO�UP�NFNPSZ �BOE�UIFO�VQEBUFT�GJMF�QPTJUJPO�3FBEJOH�'JMFT

• 3FUVSOT�OVNCFS�PG�CZUFT�SFBE�GSPN�GJMF�fd JOUP�buf• nbytes < 0 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE�• 4IPSU�DPVOUT�nbytes < sizeof(buf)�BSF�QPTTJCMF�BOE�BSF�OPUFSSPST�

Page 8: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• 8SJUJOH�B�GJMF�DPQJFT�CZUFT�GSPN�NFNPSZ�UP�UIF�DVSSFOU�GJMF�QPTJUJPO �BOE�UIFO�VQEBUFT�DVSSFOU�GJMF�QPTJUJPO�8SJUJOH�'JMFT

• 3FUVSOT�OVNCFS�PG�CZUFT�XSJUUFO�GSPN�buf UP�GJMF�fd�• nbytes < 0 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE�• "T�XJUI�SFBET �TIPSU�DPVOUT�BSF�QPTTJCMF�BOE�BSF�OPU�FSSPST�

Page 9: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

���

• "O�PGGTFU�PG�BO�PQFOFE�GJMF�DBO�CF�TFU�FYQMJDJUMZ�CZ�DBMMJOH�lseek()'JMF�0GGTFU

• 3FUVSOT�UIF�OFX�PGGTFU�PG�UIF�GJMF�fd�• nbytes < 0 JOEJDBUFT�UIBU�BO�FSSPS�PDDVSSFE�• "O�PGGTFU�DBO�CF�TFU�CFZPOE�UIF�FOE�PG�UIF�GJMF�

– *G�EBUB�JT�XSJUUFO�BU�UIBU�QPJOU �B�GJMF�ˑIPMF˒�JT�DSFBUFE�

Page 10: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• $PQZJOH�TUBOEBSE�JOQVU�UP�TUBOEBSE�PVUQVU�POF�CZUF�BU�B�UJNF�

6OJY�*�0�&YBNQMF

Page 11: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 4IPSU�DPVOUT�DBO�PDDVS�JO�UIFTF�TJUVBUJPOT�– &ODPVOUFSJOH�&0'�FOE�PG�GJMF�PO�SFBET�– 3FBEJOH�UFYU�MJOFT�GSPN�B�UFSNJOBM�– 3FBEJOH�BOE�XSJUJOH�OFUXPSL�TPDLFUT�PS�6OJY�QJQFT�

• 4IPSU�DPVOUT�EPFT�OPU�PDDVS�JO�UIFTF�TJUVBUJPOT�– 3FBEJOH�GSPN�EJTL�GJMFT�FYDFQU�GPS�&0'– 8SJUJOH�UP�EJTL�GJMFT�

• )PX�TIPVME�ZPV�EFBM�XJUI�TIPSU�DPVOUT�JO�ZPVS�DPEF – 0OF�XBZ�JT�UP�VTF�UIF�3*0�3PCVTU�*�0�QBDLBHF�GSPN�ZPVSUFYUCPPLˏT�csapp.c GJMF�"QQFOEJY�#�

%FBMJOH�XJUI�4IPSU�$PVOUT

Page 12: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• %BUB�BCPVU�EBUB �JO�UIJT�DBTF�GJMF�EBUB�– .BJOUBJOFE�CZ�LFSOFM �BDDFTTFE�CZ�VTFST�XJUI�UIF�stat BOE�fstat GVODUJPOT�

'JMF�.FUBEBUB

Page 13: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����"DDFTTJOH�'JMF�.FUBEBUB

Page 14: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 5IF�$�TUBOEBSE�MJCSBSZ�libc.a�DPOUBJOT�B�DPMMFDUJPO�PG�IJHIFS�MFWFM�TUBOEBSE�*�0�GVODUJPOT– %PDVNFOUFE�JO�"QQFOEJY�#�PG�,�3�

• &YBNQMFT�PG�TUBOEBSE�*�0�GVODUJPOT�– 0QFOJOH�BOE�DMPTJOH�GJMFT� fopen BOE�fclose– 3FBEJOH�BOE�XSJUJOH�CZUFT fread BOE�fwrite– 3FBEJOH�BOE�XSJUJOH�UFYU�MJOFT� fgets BOE�fputs– 'PSNBUUFE�SFBEJOH�BOE�XSJUJOH� fscanf BOE�fprintf

4UBOEBSE�*�0�'VODUJPOT

Page 15: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 4UBOEBSE�*�0�NPEFMT�PQFO�GJMFT�BT�TUSFBNT– "CTUSBDUJPO�GPS�B�GJMF�EFTDSJQUPS�BOE�B�CVGGFS�JO�NFNPSZ

• $�QSPHSBNT�CFHJO�MJGF�XJUI�UISFF�PQFO�TUSFBNT�EFGJOFE�JO�stdio.h– TUEJO TUBOEBSE�JOQVU– TUEPVU TUBOEBSE�PVUQVU– TUEFSS TUBOEBSE�FSSPS

4UBOEBSE�*�0�4USFBNT

Page 16: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 4UBOEBSE�*�0�GVODUJPOT�VTF�CVGGFSFE�*�0#VGGFSJOH�JO�4UBOEBSE�*�0

Page 17: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 4UBOEBSE�*�0�BSF�JNQMFNFOUFE�VTJOH�MPX�MFWFM�6OJY�*�0�6OJY�*�0�WT��4UBOEBSE�*�0

$�"QQMJDBUJPO�1SPHSBN

6OJY�*�0�'VODUJPOTBDDFTTFE�WJB�TZTUFN�DBMMT

4UBOEBSE�*�0'VODUJPOT 3*0'VODUJPOT

fopen fdopen

fread fwrite

fscanf fprintf

sscanf sprint

fgets fputs

fflush fseek

fclose

open read

write lseek

stat close

Rio_readn

Rio_written

Rio_readinitb

Rio_readlineb

Rio_readnb

8IJDI�POFT�TIPVME�ZPV�VTF�JO�ZPVS�QSPHSBNT

Page 18: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 1SPT– 5IF�NPTU�HFOFSBM�BOE�MPXFTU�PWFSIFBE�GPSN�PG�*�0�

• "MM�PUIFS�*�0�QBDLBHFT�BSF�JNQMFNFOUFE�PO�UPQ�PG�6OJY�*�0GVODUJPOT�– 6OJY�*�0�QSPWJEFT�GVODUJPOT�GPS�BDDFTTJOH�GJMF�NFUBEBUB�

• $POT– 4ZTUFN�DBMM�PWFSIFBET�GPS�TNBMM�TJ[FE�*�0�– %FBMJOH�XJUI�TIPSU�DPVOUT�JT�USJDLZ�BOE�FSSPS�QSPOF�– &GGJDJFOU�SFBEJOH�PG�UFYU�MJOFT�SFRVJSFT�TPNF�GPSN�PGCVGGFSJOH �BMTP�USJDLZ�BOE�FSSPS�QSPOF�– 5IFTF�JTTVFT�BSF�BEESFTTFE�CZ�UIF�TUBOEBSE�*�0�

1SPT�$POT�PG�6OJY�*�0

Page 19: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 1SPT– #VGGFSJOH�JODSFBTFT�FGGJDJFODZ�CZ�EFDSFBTJOH�UIFOVNCFS�PG�read() BOE�write() TZTUFN�DBMMT�– 4IPVU�DPVOUT�BSF�IBOEMFE�BVUPNBUJDBMMZ�

• $POT– 1SPWJEFT�OP�GVODUJPO�GPS�BDDFTTJOH�GJMF�NFUBEBUB�– 4UBOEBSE�*�0�JT�OPU�BQQSPQSJBUF�GPS�JOQVU�BOE�PVUQVU�PO�OFUXPSL�TPDLFUT�

• #VU�UIFSF�JT�B�XBZ�VTJOH�fdopen()

1SPT�$POT�PG�4UBOEBSE�*�0

Page 20: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• 8IFO�UP�VTF�TUBOEBSE�*�0– 8IFO�XPSLJOH�XJUI�EJTL�PS�UFSNJOBM�GJMFT�

• 8IFO�UP�VTF�SBX�6OJY�*�0�– 8IFO�ZPV�OFFE�UP�GFUDI�GJMF�NFUBEBUB�– 8IFO�ZPV�SFBE�PS�XSJUF�OFUXPSL�TPDLFUT�PS�QJQFT�– *O�SBSF�DBTFT�XIFO�ZPV�OFFE�BCTPMVUF�IJHIFTUQFSGPSNBODF��

8IFO�UP�VTF�XIBU

Page 21: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)

path: “hello-dos.txt”position: 0size: 20

H e l l o . \r \n

W h o a r e

y o u ? EOF

Page 22: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)path: “hello-dos.txt”position: 6size: 20

H e l l o . \r \n

W h o a r e

y o u ? EOF

Page 23: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)path: “hello-dos.txt”position: 8size: 20

H e l l o . \r \n

W h o a r e

y o u ? EOF

Page 24: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)path: “hello-dos.txt”position: 6size: 20

H e l l o . \r \n

W h o a r e

y o u ? EOF

Page 25: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)path: “hello-dos.txt”position: 7size: 20

H e l l o . \n \n

W h o a r e

y o u ? EOF

Page 26: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)path: “hello-dos.txt”position: 8size: 20

H e l l o . \n \n

W h o a r e

y o u ? EOF

Page 27: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)path: “hello-dos.txt”position: 11size: 20

H e l l o . \n \n

H o w a r e

y o u ? EOF

Page 28: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_RDWR | O_CREAT, 0755);read(fd, buffer, 6);read(fd, buffer + 6, 2);

lseek(fd, -2, SEEK_CUR);buffer[0] = ‘\n’;write(fd, buffer, 1);

lseek(fd, 8, SEEK_SET);strcpy(buffer, “How”);write(fd, buffer, 3);

close(fd);

File state (FD: 3)path: “hello-dos.txt”CLOSED

Page 29: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);

strcpy(buffer, “!\n”);write(fd, buffer, 2);

close(fd);

File state (FD: 3)path: “hello-dos.txt”type: Regularmode: write onlyposition: 0size: 20

H e l l o . \r \n

W h o a r e

y o u ? EOF

Page 30: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);

strcpy(buffer, “!\n”);write(fd, buffer, 2);

close(fd);

File state (FD: 3)path: “hello-dos.txt”type: Regularmode: write onlyposition: 21size: 20

H e l l o . \r \n

W h o a r e

y o u ? EOF

Page 31: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);

strcpy(buffer, “!\n”);write(fd, buffer, 2);

close(fd);

File state (FD: 3)path: “hello-dos.txt”type: Regularmode: write onlyposition: 23size: 23

H e l l o . \r \n

W h o a r e

y o u ? \0 ! \n EOF

EBUB IPMF

Page 32: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����&YBNQMF�����

char filename[] = “hello-dos.txt”;int fd;char buffer[16];off_t pos = 0;

fd = open(filename, O_WRONLY);lseek(fd, 1, SEEK_END);

strcpy(buffer, “!\n”);write(fd, buffer, 2);

close(fd);

File state (FD: 3)path: “hello-dos.txt”type: RegularCLOSEDposition: 23size: 23

Page 33: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• -BC�FYFSDJTF���– xcat QSJOUT�B�GJMF�PO�TUBOEBSE�PVUQVU– xcp DPQJFT�UIF�DPOUFOUT�PG�B�GJMF�JOUP�B�OFX�GJMF– #BTJDBMMZ �FYFDVUJOH�xcat BOE�xcpXJMM�CF�UIF�TBNF�BT�FYFDVUJOH�cat BOE�cpXJUIPVU�BOZ�PQUJPOT �SFTQFDUJWFMZ– :PVS�KPC�JT�UP�NBLF�xcat BOE�xcp VUJMJUJFT�CZ�VTJOH�TZTUFN�DBMMT�QSPWJEFE�CZ�-JOVY

-BC�&YFSDJTF

Page 34: Week3 File IO and Examples - SKKUnyx.skku.ac.kr/wp-content/uploads/2018/09/Week3_File_IO... · 2018-10-16 · &ncfeefe 4pguxbsf -bc ! 4,,6 •" 6ojy gjmf jt b tfrvfodf pg nczuft #

&NCFEEFE�4PGUXBSF�-BC��!�4,,6

����

• -BC�FYFSDJTF���– -FUˏT�DIBOHF�UIF�DPOUFOUT�PG�B�UFYU�GJMF– :PV�DBO�VTF�UIF�MJCSBSZ�ZPVˏWF�JNQMFNFOUFE�JO�1"��– &WFSZ�6OJY�*�0�ZPVˏWF�MFBSOU�TIPVME�CF�VTFE�JO�ZPVS�DPEF– $PNNBOE�MJOF�BSHVNFOUT

-BC�&YFSDJTF

$ ./convert sentence.txt word.txt result.txt