로봇SW교육원 강의자료
|
|
- 예슬 뇌
- 6 years ago
- Views:
Transcription
1 UNIT 06 저수준파일입출력 로봇 SW 교육원 최상훈
2 학습목표 2 저수준파일입출력함수 리눅스파일시스템의이해 다양한파일입출력실습을통한프로그램능력향상
3 파일시스템 3 리눅스파일시스템의특징 / 로시작하는트리구조 / (root) usr home bin local bin lib
4 열린파일에대한커널내부자료구조 4 프로세스테이블 파일테이블 v 노드테이블 fd 0: fd 1: fd 2: fd 3: fd 4: fd 플래그들 파일포인터 파일상태플래그들 현재파일오프셋 V 노드포인터 v 노드정보 i 노드정보 현재파일크기 파일디스크립터테이블 파일상태플래그들 현재파일오프셋 V 노드포인터 v 노드정보 i 노드정보 현재파일크기
5 프로세스테이블과파일테이블 5 프로세스테이블 시스템에현재실행중인모든프로세스에대한정보를저장하고있음 프로세스 ID, 프로세스권한정보, 프로세스의상태등프로세스에대한모든정보들이저장됨 파일디스크립터테이블 프로세스는자신이작업중인모든파일에대한파일디스크립터테이블저장 파일디스크립터 (file descriptor) 의구성요소 상태플래그 : FD_CLOEXEC 옵션 파일포인터 : 파일테이블의항목을가리키는포인터 파일테이블 현재시스템상에열린모든파일에대한정보 ( 시스템전역 ) 각항목의구성 파일의상태를나타내는플래그 (R, W, RW) 현재파일오프셋 v-node를가리키는포인터
6 v-node 테이블 6 v-node 테이블 각항은하나의파일과대응 파일에관련된모든정보저장 파일의종류 파일의소유정보 파일의크기 파일의실제데이터위치 ( 예 : 디스크상의위치 ) 파일의접근권한 (rwxrwxrwx) 파일의시간정보 (a, m, c) 파일의하드링크수 파일과연관된함수포인터 Linux 에는 v-node 가없고일반적 i-node 가사용됨 v-node 는하나의컴퓨터시스템에서여러종류의파일시스템을지원하기위해고안됨
7 파일디스크립터 7 파일식별자 파일디스크립터를통해파일관과련된작업 (I/O처리등 ) 을수행 음이아닌정수 open,creat 시스템콜등을통해얻을수있음 표준파일디스크립터 표준입력, 표준출력, 표준에러의파일서술자 unistd.h에정의되어있음 표준입력 : STDIN_FILENO 표준출력 : STDOUT_FILENO 표준에러 : STDERR_FILENO 표준 I/O 라이브러리의표준스트림 표준파일디스크립터와연결 stdio.h 표준입력 - 표준입력스트림 : stdin 표준출력 - 표준출력스트림 : stdout 표준에러 - 표준에러스트림 : stderr
8 open 8 #include <fcntl.h> int open ( const char *path, int oflag, /* mode_t mode */ ); Returns : file descriptor if OK, -1 on error 기능 : 존재하는파일을열거나, 새로운파일을생성 리턴값 : 성공하면파일디스크립터, 실패하면 -1 path : 열거나생성하고자하는파일 oflag : 플래그 mode : 새로운파일을만드는경우, 접근권한 (permission)
9 open flag 9 O_RDONLY - 읽기만가능 O_WRONLY - 쓰기만가능 O_RDWR - 읽기와쓰기모두가능 O_EXEC -? O_SEARCH -? 위의다섯가지모드중반드시하나선택해야함 (mutual exclusive) O_APPEND 모든쓰기작업 (write) 을파일의끝에서수행 O_CLOEXEC file descriptor flag 에 FD_CLOEXEC 를설정함 O_CREAT 파일이없을경우파일을생성 ( 세번째인자필요 ) O_DIRECTORY 디렉토리가아니면 error 를발생시킴
10 open flag 10 O_EXCL O_CREAT 와같이쓰이며, 파일이있는경우에 error 를발생 O_TRUNC 파일이있는경우에기존파일의내용을지움 기타 O_NOCTTY O_NOFOLLOW O_NONBLOCK O_SYNC O_TTY_INIT O_DYSNC O_RSYNC
11 open 11 open 에사용가능한옵션 /usr/include/bits/fcntl.h #define O_ACCMODE 0003 #define O_RDONLY 00 #define O_WRONLY 01 #define O_RDWR 02 #define O_CREAT 0100 #define O_EXCL 0200 #define O_NOCTTY 0400 #define O_TRUNC #define O_APPEND #define O_NONBLOCK #define O_NDELAY O_NONBLOCK #define O_SYNC #define O_FSYNC O_SYNC #define O_ASYNC
12 close 12 #include <unistd.h> int close ( int filedes ); Returns : 0 if OK, -1 on error 기능 : 열려진파일을닫음 리턴값 : 성공하면 0, 실패하면 -1 filedes : 닫고자하는파일의파일디스크립터 파일을닫지않더라도프로세스가종료되면모든열린파일들을자동적으로닫음
13 실습 1:open 13 open 함수를이용한파일생성 파일명 : openex1.c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #define PERM 0644 int main() int fd; char *sznewfilepath = "./newfile"; if((fd = open(sznewfilepath, O_WRONLY O_CREAT, PERM)) == -1) fprintf(stderr, "Couldn't open... : filepath:%s", sznewfilepath); exit(1); close(fd); return 0;
14 실습 2:open 14 open 함수를이용한파일생성 (with O_EXCL) 파일명 : openex2.c #include<stdio.h> #include<fcntl.h> #include<stdlib.h> #include<unistd.h> int main() int fd; char *sznewfilepath = "./newfile"; if((fd = open(sznewfilepath, O_RDWR O_CREAT O_EXCL O_TRUNC, 0644)) == -1) fprintf(stderr, "Couldn't open.. : filepath=%s\n", sznewfilepath); exit(1); close(fd); return 0;
15 실습 3:open 15 open 함수의 O_TRUNC 파일명 : openex3.c #include<stdio.h> #include<fcntl.h> #include<unistd.h> int main(void) int fd; if((fd = open("./file1", O_RDONLY O_TRUNC)) == -1) fprintf(stderr, "Couldn't open.. : filepath=%s\n", szfilepath); exit(1); printf("fd:%d\n", fd); close(fd); return 0;
16 creat 16 #include <fcntl.h> int creat ( const char *path, mode_t mode ); Returns : file descriptor opened for write-only if OK, -1 on error 기능 : 새로운파일을생성 리턴값 : 성공하면파일디스크립터, 실패하면 -1 path : 생성하고자하는파일의이름 mode : 접근권한 open 함수와비교 O_WRONLY O_CREAT O_TRUNC 플래그적용한것과동일함
17 실습 4:creat 17 creat 함수를이용한파일생성 파일명 : createx1.c #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<fcntl.h> #define PERM 0644 int main() int fd; char* sznewfilepath = "./newfile"; if((fd = creat(sznewfilepath, PERM)) == -1) fprintf(stderr, "Couldn't creat : filepath=%s", sznewfilepath); exit(1); close(fd); return 0;
18 read 18 #include <unistd.h> ssize_t read (int filedes, void *buf, size_t nbytes); 기능 : 파일로부터데이터를읽어들이는함수 ( 파일 offset 증가 ) 리턴값 : 성공하면, 버퍼로읽어들인데이터의바이트수 파일의끝을만나면, 0 실패하면, -1 buff : 읽어들인데이터를저장하는버퍼공간 nbytes : 읽어들일데이터의최대바이트의수
19 write 19 #include <unistd.h> ssize_t write (int filedes, const void *buf, size_t nbytes); 기능 : 지정된파일에데이터를쓰는함수 ( 파일 offset 증가 ) 리턴값 : 성공하면, 파일에쓴데이터의바이트수 실패하면, -1 buff : 쓸데이터를저장하고있는버퍼공간 nbytes : 쓸데이터의바이트의수 write 수행시에러가발생하는경우 파일시스템이가득찬경우 파일의크기가한계값을초과하는경우
20 lseek 20 모든열린파일에는 현재파일오프셋 이존재 파일테이블에저장됨 파일의처음부터 byte 단위로계산한정수값 파일이열릴때, 0 으로초기화됨 lseek #include <unistd.h> off_t lseek (int filedes, off_t offset, int whence ); 기능 : 파일의현재파일오프셋을명시적으로변경 리턴값 : 성공하면이동한지점의오프셋, 실패하면 -1 whence : 오프셋을옮기기위한기준점 SEEK_SET : 파일의처음시작부분 SEEK_CUR : 현재파일오프셋 SEEK_END : 파일의재일마지막부분 offset : 기준점에서의상대적인거리 (byte 단위 ) SEEK_CUR, SEEK_END 와같이쓰일때는음수도허용
21 실습 5: 표준파일디스크립터 21 표준파일디스크립터입출력 파일명 : stdfd.c #include<stdio.h> #include<unistd.h> #define BUFFSIZE 4096 int main(void) int n; char buf[buffsize]; while ((n = read(stdin_fileno, buf, BUFFSIZE)) > 0) if (write(stdout_fileno, buf, n)!= n) printf("write error\n"); return 1; if (n < 0) printf("read error\n"); return 1; return 0; $./stdfd.out > data2 hello world[ctrl+d][ctrl+d] $ cat data2 hello world $./stdfd.out < data2 > data2.copy $ cat data2 hello world $
22 실습 6:read 22 read 함수기본예제 파일명 : readex1.c #include<stdio.h> #include<unistd.h> #include<fcntl.h> int main() int fd; ssize_t nread; char *szfilepath = "./test2.txt"; char buf[1024]; if((fd = open(szfilepath, O_RDONLY)) == -1) printf("couldn't open.. : FilePath=%s\n", szfilepath); return 1; nread = read(fd, buf, sizeof(buf)); if(nread == -1) printf("couldn't read..."); return 1; printf("nread = %ud\n", nread); close(fd); return 0;
23 실습 7: 파일복사 23 파일복사 파일명 : mycp.c #include<stdio.h> #include<stdlib.h> #include<fcntl.h> #include<string.h> #include<unistd.h> #define PERM 0644 int main(int argc, char* argv[]) int nsrcfd,ndstfd; ssize_t nread = 0; ssize_t nwrite = 0; char buf[1024] = 0; char* szsrcfilepath = argv[1]; char* szdstfilepath = argv[2]; if((nsrcfd = open(szsrcfilepath, O_RDONLY)) == -1) printf("couldn't open : filepath=%s", szsrcfilepath); exit(0);
24 실습 8: 파일복사 24 if((ndstfd = creat(szdstfilepath, PERM)) == -1) printf("couldn't creat : filepath=%s", szdstfilepath); exit(0); while((nread = read(nsrcfd, buf, 1024)) > 0) if(write(ndstfd,buf,nread) < nread) printf("couldn't write"); close(ndstfd); close(nsrcfd); exit(0); nwrite += nread; memset(buf,0,sizeof buf); close(ndstfd); close(nsrcfd); if(nread == -1) printf("couldn't read"); exit(0); printf("nwrite = %d", nwrite); return 1;
25 실습 9:lseek 25 lseek 함수를이용해파일의크기구하기 파일명 : lseekex1.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> int main(void) char *fname = "test.txt"; int fd; off_t fsize; if((fd = open(fname, O_RDONLY)) == -1) printf("open error\n"); return 1; fsize = lseek(fd, 0, SEEK_END); printf("the size of <%s> is %lu bytes.\n", fname, fsize); return 0; $./lseekex1 The size of <test.txt> is 10 bytes.
26 실습 10:lseek 26 파일의구멍 파일명 : lseekex2.c #include<stdio.h> #include<fcntl.h> #include<unistd.h> char buf1[] = "abcdefghij"; char buf2[] = "ABCDEFGHIJ"; int main(void) int fd; if((fd = creat("file.hole", 0622)) < 0) fprintf(stderr, "creat error"); if(write(fd, buf1, 10)!= 10) fprintf(stderr, "buf1 write error"); if(lseek(fd, 16384, SEEK_SET) == -1) fprintf(stderr, "lseek error"); if(write(fd, buf2, 10)!= 10) fprintf(stderr, "buf2 write error"); $./lseekex2 $ ls -l file.hole -rw advc advc :01 file.hole $ od -c file.hole a b c d e f g h i j \0 \0 \0 \0 \0 \ \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * A B C D E F G H I J $ cat < file.hole > file.hole.copy $ ls -ls file.hole file.hole.copy 8 -rw advc advc :01 file.hole 20 -rw advc advc :03 file.hole.copy return 0;
27 실습 11-1:read 27 같은파일읽기예제 파일명 : readex2.c #include <stdio.h> #include <fcntl.h> #include <unistd.h> int main(void) char *fname = "data"; int fd1, fd2, cnt; char buf[30]; fd1 = open(fname, O_RDONLY); fd2 = open(fname, O_RDONLY); if(fd1 == -1 fd2 == -1) printf("open error\n"); return 1; cnt = read(fd1, buf, 12); buf[cnt] = '\0'; printf("fd1's first printf : %s\n", buf);
28 실습 11-2:read 28 lseek(fd1, 1, SEEK_CUR); cnt = read(fd1, buf, 12); buf[cnt] = '\0'; printf("fd1's second printf : %s\n", buf); cnt = read(fd2, buf, 12); buf[cnt] = '\0'; printf("fd2's first printf : %s\n", buf); lseek(fd2, 1, SEEK_CUR); cnt = read(fd2, buf, 12); buf[cnt] = '\0'; printf("fd2's second printf : %s\n", buf); return 0; < 실습하기전 data 파일생성 > $ cat > data Hello, UNIX! How are you? [Ctrl + D] $ cat data Hello, UNIX! How are you? $ $./readex2 fd1's first printf : Hello, UNIX! fd1's second printf : How are you? fd2's first printf : Hello, UNIX! fd2's second printf : How are you?
29 파일오프셋과파일 I/O 29 write 호출시동작 기록된바이트수만큼현재파일오프셋증가 현재파일오프셋이파일크기를넘게되면 i-node 테이블항목의파일크기에설정됨 open 함수호출시 O_APPEND 를지정한경우 ' 파일테이블 ' 의 ' 파일상태플래그 ' 에설정됨 write 호출시 ' 현재파일오프셋 ' 이 i-node 테이블항목의파일크기에설정됨 lseek 함수호출로파일의끝으로이동 현재파일오프셋을단순히 i-node 테이블항목의파일크기로설정 I/O 연산이일어나지않음
30 실습 12: 파일오프셋 30 O_APPEND 플래그 파일명 : openex4.c #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> int main(void) int fd; long offset; if((fd = open("./data", O_WRONLY O_APPEND)) == -1) fprintf(stderr, "open error\n"); exit(1); offset = lseek(fd, 0, SEEK_CUR); printf("before write offset:%ld\n", offset); if(write(fd, "7777", 4)!= 4) fprintf(stderr, "write error\n"); exit(1); offset = lseek(fd, 0, SEEK_CUR); printf("after write offset:%ld\n", offset); offset = lseek(fd, 0, SEEK_END); printf("file size:%ld\n", offset); close(fd); exit(0); $ cat > data [Ctrl+d][Ctrl+d]$./openEx4 before write offset:0 after write offset:14 file size:14 $
31 파일의공유 31 UNIX 는 multi-user/multi-tasking 시스템이기때문에다른프로세스에의해같은파일을동시에접근할있음 프로세스 A 테이블항목 파일테이블 v 노드테이블 fd 0: fd 1: fd 2: fd 3: fd 플래그들 파일포인터 파일상태플래그들 현재파일오프셋 V 노드포인터 v 노드정보 프로세스 B 테이블항목 i 노드정보 현재파일크기 fd 0: fd 1: fd 2: fd 3: fd 4: fd 플래그들 파일포인터 파일상태플래그들 현재파일오프셋 V 노드포인터
32 원자적연산 32 원자적 (atomic) 연산 연산수행중에다른연산에의해가로채지지않는것 모두수행되거나또는모두수행되지않거나 open 시 O_APPEND 플래그지원되지않는다면? if (lseek(fd, 0L, SEEK_END) == -1) /* position to EOF */ fprintf(stderr, "lseek error\n"); exit(1); <<<<<<<<<<<<<<< >>>>>>>>>>>>>>>> if (write(fd, buf, 100)!= 100) /*...and write */ fprintf(stderr, "write error\n"); exit(1); lseek 와 write 사이에다른프로세스가실행될가능성이있음 semaphore, mutex 등을사용해야함
33 실습 13: 원자적연산 33 원자적연산 파일명 : atomicex1.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> int main(void) char *fname = "shared"; int fd; off_t curoffset; long i; if((fd = open(fname, O_WRONLY)) == -1) printf("open error\n"); return 1; for(i = 0 ; i < ; i++) curoffset = lseek(fd, 0, SEEK_END); if(write(fd, "0", 1)!= 1) exit(1); printf("%ld\r", i); return 0;
34 실습 14: 원자적연산 34 원자적연산 파일명 : atomicex2.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> int main(void) char *fname = "shared"; int fd; off_t curoffset; long i; if((fd = open(fname, O_WRONLY O_APPEND)) == -1) printf("open error\n"); return 1; for(i = 0 ; i < ; i++) if(write(fd, "0", 1)!= 1) exit(1); printf("%ld\r", i); return 0;
35 실습 15-1: 구조체파일출력 35 구조체파일 write 파일명 : structurewrite.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> typedef struct TAG_GPIOCTL_DATA int pinno; int ontime; int offtime; int repeat; GPIOCTL_DATA; int main(void) char *fname = "gpio_data"; int fd; const int DATA_SIZE = sizeof(gpioctl_data); GPIOCTL_DATA data;
36 실습 15-2: 구조체파일출력 36 printf("pinno:"); scanf("%d", &data.pinno); printf("ontime:"); scanf("%d", &data.ontime); printf("offtime:"); scanf("%d", &data.offtime); printf("repeat:"); scanf("%d", &data.repeat); if((fd = open(fname, O_WRONLY O_CREAT O_TRUNC, 0644)) == -1) fprintf(stderr, "open error\n"); return 1; if(write(fd, &data, DATA_SIZE)!= DATA_SIZE) fprintf(stderr, "write error\n"); exit(1); return 0;
37 실습 16-1: 구조체파일입력 37 구조체파일 read 파일명 : structureread.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> typedef struct TAG_GPIOCTL_DATA int pinno; int ontime; int offtime; int repeat; GPIOCTL_DATA; int main(void) char *fname = "gpio_data"; int fd; const int DATA_SIZE = sizeof(gpioctl_data); GPIOCTL_DATA data;
38 실습 16-2: 구조체파일입력 38 if((fd = open(fname, O_RDONLY)) == -1) fprintf(stderr, "open error\n"); return 1; if(read(fd, &data, DATA_SIZE)!= DATA_SIZE) fprintf(stderr, "read error\n"); exit(1); printf("pinno:%d\n", data.pinno); printf("ontime:%d\n", data.ontime); printf("offtime:%d\n", data.offtime); printf("repeat:%d\n", data.repeat); return 0;
39 dup, dup2 39 #include <unistd.h> int dup (int filedes); int dup2 (int filedes, int filedes2); 기능 : 사용중인파일디스크립터를복사 리턴값 : 성공하면할당받은파일디스크립터번호, 실패하면 -1 dup( ) 함수는할당가능한가장작은번호를리턴 dup2( ) 함수는 filedes2를리턴, fd1를 fd2로복사함 파일디스크립터항목의플래그 (FD_CLOEXEC) 는초기값 (0) 설정됨
40 dup, dup2 40 동일한 ' 파일테이블 ' 항목을공유 ex) newfd = dup(1); newfd = dup2(1,3); 프로세스테이블 fd 0: fd 1: fd 2: fd 3: fd 플래그들 파일포인터 파일테이블 파일상태플래그들현재파일오프셋 v 노드테이블 v노드정보 i노드정보 V 노드포인터 현재파일크기
41 실습 17:dup 41 파일명 : dupex1.c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> #include <unistd.h> int main(void) char *fname = "data2"; int fd1, fd2, cnt; char buf[30]; $ cat > data2 abcd0123[ctrl + D][Ctrl + D] $./dupex1 fd1's printf : abcd current file offeset:4 fd2's printf : 0123 $ if((fd1 = open(fname, O_RDONLY)) == -1) printf("open error/n"); return 1; fd2 = dup(fd1); cnt = read(fd1, buf, 4); buf[cnt] = '\0'; printf("fd1's printf : %s\n", buf); printf("current file offeset:%ld\n", lseek(fd1, 0, SEEK_CUR)); cnt = read(fd2, buf, 4); buf[cnt] = '\0'; printf("fd2's printf : %s\n", buf); return 0;
42 실습 18:dup 42 파일명 : dupex2.c #include<stdio.h> #include<fcntl.h> #include<unistd.h> int main(void) char *fname = "data3"; int fd1, fd2; if((fd1 = creat(fname, 0666)) < 0) printf("creat error\n"); return 1; printf("first printf is on the screen.\n"); fd2 = dup2(fd1,1); printf("second printf is in this file.\n"); printf("fd2:%d\n", fd2); return 0; $./dupex2 First printf is on the screen. $ cat data3 Second printf is in this file. fd2:1
43 fcntl 43 #include <fcntl.h> int fcntl (int filedes, int cmd, /* int arg */ ); 기능 : 이미열려져있는파일에대한속성을알아내거나변경함 cmd 에따라기능이달라짐 리턴값 : 성공인경우에 cmd 값에따라다름 ( 다음슬라이드참고 ), 실패하면 -1
44 fcntl 명령의종류 44 명령의종류 (cmds) F_DUPFD : 파일디스크립터를복사. 세번째인수보다크거나같은값중가장작은미사용의값을리턴한다. F_GETFD : 파일디스크립터의플래그를반환 (FD_CLOEXEC) F_SETFD : 파일디스크립터의플래그를설정 F_GETFL : 파일테이블에저장되어있는파일상태플래그를반환 F_SETFL : 파일상태플래그의설정 (O_APPEND, O_NONBLOCK, O_SYNC 등을지정 ) F_GETLK/F_SEKLK : 레코드자물쇠를조회 / 설정함 (14 장고급 I/O)
45 실습 19-1:fcntl ( 파일명 : fcntlex.c) 45 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> int main(void) char *fname = "data"; int fd; int flag; if((fd = open(fname, O_RDWR O_APPEND)) < 0) printf("open error\n"); return 1; flag = fcntl(fd, F_GETFL, 0); switch(flag & O_ACCMODE) case O_RDONLY: printf("o_rdonly flag is set.\n"); break; case O_WRONLY: printf("o_wronly flag is set.\n"); break; case O_RDWR: printf("o_rdwr flag is set.\n"); break; default: printf("unknown accemode"); break;
46 실습 19-2:fcntl 46 if (flag & O_APPEND) printf("fd: O_APPEND flag is set. \n"); else printf("fd: O_APPEND flag is NOT set. \n"); flag = fcntl(fd, F_GETFD, 0); if (flag & FD_CLOEXEC) printf("fd: FD_CLOEXEC flag is set. \n"); else printf("fd: FD_CLOEXEC flag is NOT set. \n"); fcntl(fd, F_SETFD, FD_CLOEXEC); flag = fcntl(fd, F_GETFD, 0); if (flag & FD_CLOEXEC) printf("fd: FD_CLOEXEC flag is set. \n"); else printf("fd: FD_CLOEXEC flag is NOT set. \n"); return 0; $./fcntlex.out O_RDWR flag is set. fd: O_APPEND flag is set. fd: FD_CLOEXEC flag is NOT set. fd: FD_CLOEXEC flag is set. $
47 참고자료 : 열수있는파일의개수 47 프로세스가열수있는파일의최대개수 파일명 : maxopen.c #include<stdio.h> #include<unistd.h> int main(void) printf("open_max:%ld\n", sysconf(_sc_open_max)); return 1;
48 참고자료 : 파일명과경로명의최대길이 파일의경로최대길이 : PATH_MAX 파일의이름최대길이 : NAME_MAX #include<stdio.h> #include<unistd.h> #include<limits.h> int main(void) printf("path_max:%ld\n", pathconf("/",_pc_path_max)); printf("name_max:%ld\n", pathconf("/",_pc_name_max)); 48 printf("path_max:%d\n", PATH_MAX); printf("name_max:%d\n", NAME_MAX); return 0;
49 참고자료 : 파일명과경로명의최대길이 파일의경로최대길이 : PATH_MAX 파일의이름최대길이 : NAME_MAX #include<stdio.h> #include<errno.h> #include<unistd.h> #include<fcntl.h> extern int errno; int main(void) if(_posix_no_trunc) printf("path_max:%ld\n", pathconf("/",_pc_path_max)); printf("name_max:%ld\n", pathconf("/",_pc_name_max)); if(open(" \ \ data",O_RDWR O_CREAT, 0777) == -1) if(errno == ENAMETOOLONG) perror(""); return 1; 49
50 미션 50 실습 15 프로그램은 gpio_data 파일을읽고내용을출력한다. gpio_data 파일을읽어실제 LED 를제어하도록프로그램을수정하시오. (wiringpi 라이브러리사용 ) - pinno : GPIO 핀번호 - ontime : GPIO 핀이 On 상태인시간 ( 초 ) - offtime : GPIO 핀이 Off 상태인시간 ( 초 ) - repeat : 반복회수
로봇SW교육원 강의자료
UNIT 06 파일 I/O 로봇 SW 교육원 3 기 학습목표 2 저수준파일입출력함수를사용핛수있다. 리눅스파일시스템을이해핚다. 다양핚파일입출력실습을통해프로그램능력을향상핚다. 파일디스크립터 3 파일디스크립터를통해파일의 I/O처리 음이아닊정수 표준입력, 표준출력, 표준에러의파일서술자 unistd.h STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO
슬라이드 1
/ 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file
Microsoft PowerPoint APUE(File InO).ppt
컴퓨터특강 () [Ch. 3] 2006 년봄학기 문양세강원대학교컴퓨터과학과 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 1 What is a File? A file is a contiguous
Microsoft PowerPoint APUE(File InO)
Linux/UNIX Programming 문양세강원대학교 IT특성화대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous
제1장 Unix란 무엇인가?
4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device
Microsoft PowerPoint APUE(File InO).pptx
Linux/UNIX Programming 문양세강원대학교 IT대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous
제12장 파일 입출력
제 4 장파일입출력 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 시스템호출 (system call) 파일 (file) 임의접근 (random access) 주요학습내용 2 4.1 절 커널의역할 (kernel) 커널 (kernel) 은운영체제의핵심부분으로서, 하드웨어를운영관리하는여러가지서비스를제공함 파일관리 (File management) 디스크 프로세스관리
Microsoft PowerPoint - chap2
제 2 장. 파일입출력 (File I/O) 숙대창병모 1 목표 파일의구조및특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 파일현재위치변경 기타파일제어 숙대창병모 2 2.1 파일구조 숙대창병모 3 What is a file? a file is a contiguous sequence of bytes no format imposed by the operating
제1장 Unix란 무엇인가?
1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.
Microsoft PowerPoint - chap12 [호환 모드]
제 12 장고급입출력 Nov 2007 숙대창병모 1 Contents 1. Nonblocking I/O 2. Record Locking 3. Memory Mapped I/O Nov 2007 숙대창병모 2 12.1 Nonblocking I/O Nov 2007 숙대창병모 3 Nonblocking I/O Blocking I/O I/O 작업완료를기다리며영원히리턴안할수있다
chap7.key
1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )
<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
PowerPoint 프레젠테이션
File I/O Jo, Heeseung 학습목표 오류처리함수동적메모리할당명령행인자 2 오류처리함수 [1] 오류메시지출력 : perror(3) #include void perror(const char *s); [ 예제 1-4] perror 함수사용하기 01 #include 02 #include 03
PowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
歯9장.PDF
9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'
2009년 상반기 사업계획
파일입출력 IT CookBook, 유닉스시스템프로그래밍 학습목표 유닉스에서파일입출력의특징을이해한다. 저수준파일입출력함수를사용할수있다. 고수준파일입출력함수를사용할수있다. 임시파일을생성해파일입출력을할수있다. 2/51 목차 저수준파일입출력 파일기술자 파일생성과열고닫기 파일읽기와쓰기 파일오프셋지정 파일기술자복사 파일기술자제어 파일삭제 고수준파일입출력 파일포인터 파일열기와닫기
10.
10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write
Microsoft PowerPoint - ch09_파이프 [호환 모드]
학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 파이프 IT CookBook, 유닉스시스템프로그래밍 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미
2009년 상반기 사업계획
파이프 IT CookBook, 유닉스시스템프로그래밍 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 3/20 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미
Microsoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
<4D F736F F F696E74202D FC6C4C0CF20C0D4C3E2B7C2205BC8A3C8AF20B8F0B5E55D>
학습목표 유닉스에서파일입출력의특징을이해한다. 저수준파일입출력함수를사용할수있다. 고수준파일입출력함수를사용할수있다. 임시파일을생성해파일입출력을할수있다. 파일입출력 IT CookBook, 유닉스시스템프로그래밍 2/45 목차 저수준파일입출력 파일기술자 파일생성과열고닫기 파일읽기와쓰기 파일오프셋지정 파일기술자복사 파일기술자제어 파일삭제 고수준파일입출력 파일포인터 파일열기와닫기
PowerPoint 프레젠테이션
Error and Command Line Arguments Jo, Heeseung 학습목표 오류처리함수동적메모리할당명령행인자 2 오류처리함수 [1] 오류메시지출력 : perror(3) #include void perror(const char *s); [ 예제 1-4] perror 함수사용하기 01 #include 02
PowerPoint 프레젠테이션
ERROR AND COMMAND LINE ARGUMENTS Jo, Heeseung 학습목표 오류처리함수 동적메모리할당 명령행인자 2 오류처리함수 [1] 오류메시지출력 : perror(3) #include void perror(const char *s); [ 예제 1-4] perror 함수사용하기 01 #include
Microsoft PowerPoint - 09-Pipe
9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include
<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>
학습목표 통신프로그램이무엇인지이해한다. 을이용한 IPC 기법을이해한다. 함수를사용해프로그램을작성할수있다. IT CookBook, 유닉스시스템프로그래밍 2/20 목차 의개념 함수 해제함수 의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 의개념 파일을프로세스의메모리에매핑 프로세스에전달할데이터를저장한파일을직접프로세스의가상주소공간으로매핑 read, write
2009년 상반기 사업계획
메모리매핑 IT CookBook, 유닉스시스템프로그래밍 학습목표 통신프로그램이무엇인지이해한다. 메모리매핑을이용한 IPC 기법을이해한다. 메모리매핑함수를사용해프로그램을작성할수있다. 2/20 목차 메모리매핑의개념 메모리매핑함수 메모리매핑해제함수 메모리매핑의보호모드변경 파일의크기확장 매핑된메모리동기화 데이터교환하기 3/20 메모리매핑의개념 메모리매핑 파일을프로세스의메모리에매핑
ABC 11장
12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00
Microsoft PowerPoint - chap4 [호환 모드]
제 5 장 C 표준라이브러리 숙대창병모 1 목표 C 표준라이브러리의깊이있는이해 시스템호출과 C 표준라이브러리관계 숙대창병모 2 C 입출력라이브러리함수 숙대창병모 3 시스템호출과라이브러리함수 System Calls well defined entry points directly into the kernel documented in section 2 of the
PowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
untitled
Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II
슬라이드 1
Task 통신및동기화 : 파이프 (Pipe) Chapter #11 파이프 (Unamed Pipe) 표준입출력과파이프 FIFO(Named Pipe) 강의목차 Unix System Programming 2 파이프 (Unnamed Pipe) 파이프 (Pipe) (1) 하나의프로세스를다른프로세스에연결시켜주는단방향의통신채널 입출력채널과동기화기능을제공하는특수한형태의파일
PowerPoint 프레젠테이션
오픈소스소프트웨어개발입문 (CP33992) 파일입출력 부산대학교공과대학정보컴퓨터공학부 학습목표 파일의기본개념과특징을이해할수있다. 파일처리과정을이해할수있다. 형식을지정한파일입출력함수의사용법을알수있다. 2 파일과파일포인터 3 파일 C 의파일은모든데이터를연속된바이트형태로저장한다. 4 텍스트파일 (text file) C 언어의파일종류 사람들이읽을수있는문자들을저장하고있는파일
금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 24. 파일입출력 2013.11.27. 오병우 컴퓨터공학과 파일 (File) 입출력 표준입출력 vs. 파일입출력 HDD 프로그래머입장에서는동일한방법으로입출력 다만 file 을읽고쓰기전에 Open 해서스트림에대한파일포인터 (file pointer) 를얻어야한다. OS 가실제작업을대행하며, 프로그래머는적절한함수를적절한방법으로호출 Department
vi 사용법
네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o
6주차.key
6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running
PowerPoint 프레젠테이션
Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용
PowerPoint 프레젠테이션
파일입출력 Heeseung Jo 이장의내용 파일과파일포인터 파일입출력함수 임의접근파일처리 2 파일과파일포인터 파일 파일은모든데이터를연속된바이트형태로저장 4 C 언어의파일종류 텍스트파일 (text file) 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 " 한줄의끝 " 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환 예, a.txt, main.c,
PowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
Microsoft PowerPoint - 09_FileSystem
Linux 파일시스템프로그래밍 File System Programming - 파일시스템내부구조 - File Descriptor - File 기본작업시스템호출 - File 정보관리시스템호출 - Directory 관리시스템호출 이제부터는 시스템사용에만머물지않는다. 내부로들어가서건드려보고나만의시스템을만들자. 시스템호출 ( 또는표준 API) 을이용하여운영체제기능을프로그램에서사용
PowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
PowerPoint 프레젠테이션
Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여
PowerPoint 프레젠테이션
7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED
Microsoft PowerPoint - Lecture 4-1 Linux File Environment.ppt [호환 모드]
Liux Programmig Sprig 2008 File Hadlig Importat cotets Liux 에서 C 컴파일방법 File 처리프로그래밍 Liux 환경접근프로그래밍 Kogju Natioal Uiversity Liux System Programmig 2/29 Basic compilig method Liux C Compiler : gcc, cc 기본
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ cd /usr $ ls..? $ ls.? 2. 다음그림은어떤프로세스가다음코드를수행했다는가정에서도시되었다.
Microsoft PowerPoint - 제11강 파일 처리
제13장 파일 처리 파일열기 : File Open FILE *fp; fp=fopen( filename, r ); File handling mode: r, w, a, rb, wb, ab, r+, w+, a+ fclose(fp) 파일의종류 : Text File, Binary File Text file:.txt,.doc,.hwp Binary file:.exe,.jpg,.gif,.mov,.mpeg,.tif,.pgm,.ppm.
슬라이드 1
7.4 프로세스간통신 Interprocess Communication 기본적인프로세스간통신기법 데이터스트림과파이프 data stream and pipe 정보의송수신에사용되는일련의연속된데이터 a sequence of data used to send or receive information 예 : 프로세스와파일 ( 파일디스크립터을통하여 ) 을연결해주는데이터스트림
The Pocket Guide to TCP/IP Sockets: C Version
얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow
K&R2 Reference Manual 번역본
typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct
PowerPoint 프레젠테이션
Sensor Device Jo, Heeseung Sensor 실습 HBE-SM5-S4210 에는근접 / 가속도 / 컴파스센서가장착 각센서들을사용하기위한디바이스드라이버와어플리케이션을작성 2 근접 (Proximity) 센서 HBE-SM5-S4210 Camera Module 근접센서디바이스 근접센서는사물이다른사물에접촉되기이전에가까이접근하였는지를검출할목적으로사용 일반적으로생활에서자동문이나엘리베이터,
/chroot/lib/ /chroot/etc/
구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어
11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
Microsoft PowerPoint - lab14.pptx
Mobile & Embedded System Lab. Dept. of Computer Engineering Kyung Hee Univ. Keypad Device Control in Embedded Linux HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착되어있다. 2 Keypad Device Driver
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (t
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (taesoo) 가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ ls /usr/.. $
제1장 Unix란 무엇인가?
7 장 C 표준파일입출력 컴퓨터과학과박환수 1 2 7.1 파일및파일포인터 시스템호출과 C 라이브러리함수 시스템호출 (System Calls) Unix 커널에서비스요청하는호출 UNIX man의 Section 2에설명되어있음 C 함수처럼호출될수있음. C 라이브러리함수 (Library Functions) C 라이브러리함수는보통시스템호출을포장해놓은함수 보통내부에서시스템호출을함
2009년 상반기 사업계획
소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버
0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4
Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x
쉽게 풀어쓴 C 프로그래밍
제 13 장파일처리 1. 스트림의개념을이해한다. 2. 객체지향적인방법을사용하여파일입출력을할수있다. 3. 텍스트파일과이진파일의차이점을이해한다. 4. 순차파일과임의접근파일의차이점을이해한다. 이번장에서만들어볼프로그램 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 입출력관련클래스들 파일쓰기
금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
PowerPoint 프레젠테이션
Chapter 12 표준입출력과파일입출력... 1. 표준입출력함수 2. 파일입출력함수 1. 표준입출력함수 표준입출력함수 표준입력 (stdin, Standard Input) : 키보드입력 표준출력 (stdout, StandardOutput) : 모니터출력 1. 표준입출력함수 서식화된입출력함수 printf(), scanf() 서식의위치에올수있는것들 [ 기본 11-1]
BMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
Microsoft PowerPoint - chap11.ppt [호환 모드]
2010-1 학기프로그래밍입문 (1) 11 장입출력과운영체제 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr k 0 특징 printf() - 임의의개수의인자출력 - 간단한변환명세나형식을사용한출력제어 A Book on C, 4ed. 11-1 printf() printf(control_string, other_argument) -
Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]
Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)
Chapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
좀비프로세스 2
Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.
untitled
if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
Microsoft PowerPoint APUE(Intro).ppt
컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버
PowerPoint Template
13 파일처리 1 함수 fopen() 파일열기 파일을만들기위해서는함수 fopen() 을이용 함수 fopen() 의함수원형은다음과같으며헤더파일 stdio.h 파일에정의 함수 fopen() 은두개의문자열전달인자를이용, 반환값은포인터값인 FILE * 2 파일열기 인자 함수 fopen() 에서 첫번째문자열은처리하려는파일이름이고, 두번째문자열은파일처리종류 ( 모드 )
PowerPoint 프레젠테이션
과제간단해설및소개 정우영조교 최종업데이트 : 2013-12-14 들어가며 이거자체는 1 번과제끝나고부터만들기시작했는데어쩌다보니배포는이제와서야 ㅜㅜ 대략적인문제만집었습니다. 프기실 에해당하는문제는가능한집지않으려합니다. 앞으로추가할거있으면하겠지만.. 이제마지막이네요ㅡㅡ ; sizeof 연산자 array, struct/union 에대해선할당받은크기 포인터에겐포인터의크기를돌려줌
이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
PowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
Microsoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
제9장 프로세스 제어
제 9 장프로세스제어 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 제 9 장 목차 프로세스생성 프로그램실행 입출력재지정 프로세스그룹 시스템부팅 2 9.1 절 프로세스생성 fork() 시스템호출 새로운프로그램을실행하기위해서는먼저새로운프로세스를생성해야하는데, fork() 시스템호출이새로운프로세스를생성하는유일한방법임. 함수프로토타입 pid_t fork(void);
3. 다음그림은프로세스의 file table 과 v-node 테이블의연결관계예제이다. 위그림을참고하여두개의서로다른프로세스가같은파일을 open 명령을사용하여열었을때의연결관계를도시하시오. 4. 메모리영역은 low-address 부터 high-adress 까지순서대로나열했을
학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (taesoo) 가터미널에서다음 ls 명령입력시화면출력을예측하시오. $ ls /usr/. $ ls
Microsoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
Microsoft PowerPoint - IOControl [호환 모드]
목차 Input/Output Control I/O Control Mechanism mmap function munmap function RAM Area Access LED Control 4 digits 7 Segment Control Text LCD Control 1 2 I/O Control Mechanism (1) I/O Control Mechanism (2)
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
UI TASK & KEY EVENT
T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력
<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>
학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행
2009년 상반기 사업계획
프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]
제1장 Unix란 무엇인가?
5 장파일시스템 상지대학교컴퓨터공학과고광만 kkman@sangji.ac.kr http://compiler.sangji.ac.kr 2018 5.1 파일시스템구현 파일시스템구조 0 1 2 3 200 201 부트블록슈퍼블록 i-노드 1..40 i-노드 41..80... 데이터블록데이터블록... i- 리스트 데이터블록 데이터블록 3 파일시스템구조 부트블록 (Boot
Microsoft PowerPoint - 09_(C_Programming)_(Korean)_File_Processing
C Programming 파일처리 (File Processing) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 파일입출력 텍스트파일입출력함수 이진파일입출력함수 다양한파일처리함수 2 파일입출력 파일입출력 입출력스트림 파일과파일입출력 텍스트파일입출력함수 이진파일입출력함수 다양한파일처리함수 3 스트림 (Stream) 데이터의논리적흐름
Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]
TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()
Microsoft PowerPoint - chap12-고급기능.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 가 제공하는 매크로 상수와 매크로
1장. 유닉스 시스템 프로그래밍 개요
Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시
Microsoft PowerPoint - chap11-1.ppt [호환 모드]
chapter 11-1 참고자료. 파일입출력 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 파일입출력의개념 파일은데이터를입출력하는모든대상을의미한다. - 키보드로부터데이터를입력하고모니터로출력하는것은키보드파일과 모니터파일로데이터를입출력하는것이다.
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
Lab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
The OSI Model
Advanced Socket Programming Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 다중처리기술 2 다중처리기술 Multitasking Multi-process Multi-thread Multiplexing Polling Selecting Interrupt
The Pocket Guide to TCP/IP Sockets: C Version
1 목포해양대해양컴퓨터공학과 UDP 소켓 네트워크프로그램설계 4 장 2 목포해양대해양컴퓨터공학과 목차 제 4장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송신및수신 4.4 UDP 소켓의연결 3 목포해양대해양컴퓨터공학과 UDP 소켓의특징 UDP 소켓의특성 신뢰할수없는데이터전송방식 목적지에정확하게전송된다는보장이없음.
고급 프로그래밍 설계
UNIT 12 프로세스제어 광운대학교로봇 SW 교육원 최상훈 init 프로세스 2 init 프로세스 프로세스 ID : 1 시스템부팅젃차마지막에커널에의해실행됨 커널부팅이후 UNIX 시스템을뛰우는역핛을함 시스템의존적초기화파일들 /etc/rc* 파일들, /etc/inittab 과, /etc/init.d 의파일들을읽고시스템을특정핚상태 ( 이를테면다중사용자상태 ) 로설정함
1장. 유닉스 시스템 프로그래밍 개요
9 장. 파이프 Unix 프로그래밍및실습 1 강의내용 1 절개요 2 절이름없는파이프 3 절이름있는파이프 http://lily.mmu.ac.kr/lecture/13u2/ch09.pdf 책에나온내용반드시 man 으로확인할것! UNIX, LINUX 등시스템마다차이가있을수있음을반드시인식 2 기본실습 #1 [ 예제 9-1] ~ [ 예제 9-7] ( 각 10점 ) 과제개요
본 강의에 들어가기 전
C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o
KEY 디바이스 드라이버
KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)
<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>
의료프로그래밍실습 의료공학과이기영 1 Chap. 11 파일입출력 2 1 이장의목표 텍스트파일의입출력방법을익힌다. (284 쪽그림참조 ) 3 C 언어의파일종류 텍스트파일 (text file) 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 한줄의끝 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환된다. 이진파일 (binary file) : 자료형그대로의바이트수로연속해서저장
À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾
P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP
PowerPoint 프레젠테이션
LED Device Control - mmap() Jo, Heeseung 디바이스제어 디바이스제어 HBE-SM5-S4210 에장착된 Peripheral 들은다양한인터페이스로연결되어있음 베이스보드에있는 LED 와 7-Segment 는 GPIO 로직접 CPU 에연결 M3 모듈인 FPGA 모듈은 FPGA 에의해서제어되며 CPU 와호스트버스로연결되어있어서프로그램에서는메모리인터페이스로인식
Microsoft PowerPoint - chap6 [호환 모드]
제 6 장프로세스 (Process) 숙대창병모 1 내용 프로세스시작 / 종료 명령중인수 / 환경변수 메모리배치 / 할당 비지역점프 숙대창병모 2 프로세스시작 / 종료 숙대창병모 3 Process Start Kernel exec system call user process Cstart-up routine call return int main(int argc,
< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법