[시스템프로그래밍]임의 접근 파일 모든 포스트 목록 임의 접근 파일 특정 위치에 있는 데이터를 가져오거나 수정해야 할 때 처음부터 찾는 것은 비효율적이다. 임의 접근 파일(random access file)은 파일 위치 포인터를 이용하여 원하는 지점으로 이동하여 데이터를 읽거나 쓸 수 있다. 파일 위치 포인터 파일 내에 읽거나 쓸 위치인 현재 파일 위치(current file position)을 가리킨다 lseek() 임의의 위치로 파일 위치 포인터를 이동시킬 수 있다 현재 파일 위치를 whence를 기준으로 offset만큼 이동 prototype #include off_t lseek(int fd, off_t offset, int whence); 성공 시 현재 위치, 실패 시 -1 리턴 offset : 기준점으로부터 (바이트 단위의) 거.. [시스템프로그래밍]시스템 호출 read()/write()/dup()/dup2() 모든 포스트 목록 read() fd가 나타내는 파일에서 n바이트만큼의 데이터를 읽고 읽은 데이터는 buf에 저장한다 prototype #include ssize_t read(int fd, void *buf, size_t nbytes); //size_t : unsigned integer //ssize_t : signed integer 성공 시 읽은 바이트 수, 파일 끝을 만나면 0, 실패 시 -1을 리턴한다 읽을 데이터가 충분하면 n바이트를 읽고, 읽을 데이터가 충분치 않다면 있는 만큼 읽는다 fsize.c /*파일 크기를 계산하는 프로그램*/#include #include #include #define BUFSIZE 512 int main(int argc, char *argv[]) { char buffe.. [시스템프로그래밍]시스템 호출 open()/creat()/close() 모든 포스트 목록 open() path가 나타내는 파일을 oflag 모드로 연다 prototype #include #include #include // 파일을 새로 만들때의 권한 int open (const char *path, ing oflag, [mode_t mode]; 성공 시 파일 디스크립터를, 실패 시 -1을 리턴한다 oflag : 대상의 입출력 방식을 지정함 O_RDONLY : 읽기 모드, read() 호출 가능 O_WRONLY : 쓰기 모드, write() 호출 가능 O_RDWR : 읽기/쓰기 모드, read()/write() 호출 가능 (여기까지 필수 지정/다음부터 선택 지정) O_APPEND : 파일 끝에 데이터 첨부 O_CREAT : 해당 파일이 없는 경우 파일 생성 mode는 생성할 .. [시스템프로그래밍]파일 시스템 모든 포스트 목록 파일 시스템 구조 파일 타입 파일 사용권한 디렉토리 링크 (클릭하시면 이동합니다) 파일 연속된 바이트의 나열로 특별히 다른 포맷을 정하지 않는다 파일을 사용하는 방식으로 외부 장치도 사용 가능하다 파일 디스크립터 열린 파일을 나타내는 번호로 향후 파일에 대한 입출력 연산에서 열린 파일을 나타낸다 0은 표준 입력, 1은 표준 출력, 2는 표준 에러에 해당하는 파일의 번호를 의미한다 C에서 파일을 fopen을 이용하여 열 때 리턴 받는 값인 파일 포인터와 대비된다 파일 시스템 구조 파일이 저장되어 있는 구조이다. 부트 블록(boot block) 보통 파일 시스템의 시작부에 위치한다 부트스트랩 코드가 저장된다 수퍼 블록(super block) 전체 파일 시스템에 대한 정보를 저장한다 총 블록.. [시스템프로그래밍]시스템 호출 #개요 모든 포스트 목록 시스템 호출 커널에 서비스 요청을 하기 위한 프로그래밍 인터페이스 응용 프로그램은 파일에 직접 접근할 수 없기 때문에 시스템 호출을 통해서 커널에 서비스를 요청한다 사용자 모드에서 실행중인 프로세스를 사용자 프로세스, 커널 모드에서 실행중인 프로세스를 커널 프로세스라고 한다 C 프로그램의 경우 시스템 호출 대신 라이브러리 함수를 호출할 수도 있으나 실은 라이브러리 함수도 함수 내에서 관련된 시스템 호출을 한다 시스템 호출 과정 - 예시 : open() 시스템 호출 사용자 프로세스에서 시스템 호출을 한다 C runtime library에서 커널로 점프하기 위해 레지스터를 통해 매개변수를 전달하는 등의 작업을 한다 trap 명령어를 이용하여 커널로 점프한다 동시에, 각 시스템 호출의 시작 .. [시스템프로그래밍]리눅스 시스템 개요 모든 포스트 목록 어째서 Linux를 배우는가? 단순성(simplicity) : 자원에 대한 일관된 관점을 제공한다 이식성(portability) : C언어로 작성하여 다양한 플랫폼에 이식이 가능하다 개방성(openness) : 전체 소스 코드를 제공한다 리눅스 구조 OS : 컴퓨터의 하드웨어 자원을 운영하고 프로그램을 실행할 수 있는 환경을 제공한다 kernel : 운영체제의 핵심으로 하드웨어 운영하고 관리한다 system call : 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스 역할을 한다 shell : 사용자와 운영체제 사이의 인터페이스로 사용자로부터 명령어를 입력 받아 해석하여 수행하여주는 명령어 해석기 utilities : 평소에 사용하는 명령어들 커널의 역할 프로세스 관리 : 여러 프로.. [WEB]포스트 목록 HTML 기초 기초, 구조 태그 기초 태그, 특수문자 목록 태그 표 태그 링크 태그 이미지 태그, 오디오 태그, 비디오 태그 프레임 태그 form 태그 CSS 기초 CSS FONT PROPERTY ORDER JavaScript 기초 eval PHP 기초 cookie getenv Superglobals, $_SERVER mysqli_connect mysqli_query mysqli_connect_errno isset str_replace XML XXE를 위한 속성 XML 공부 생활코딩 정리 WEB1 WEB2 - CSS 언어 - 자바스크립트 클라이언트 - 웹브라우저 자바스크립트 Flask 빠르게 시작하기 - 기본 애플리케이션 빠르게 시작하기 - 디버그 모드 빠르게 시작하기 - 라우팅 빠르게 시작하기 - UR.. 2019 겨울방학 프로젝트#결과 이전 1 ··· 18 19 20 21 22 23 24 ··· 28 다음