전체 글

전체 글

    2. 파일 읽기 - read()

    개요 저번 포스팅에서는 open(), creat() 시스템 콜을 이용해 파일을 열어보는 것 까지 했다. 파일을 열었으니 이제 읽는 방법에 대해 알아볼 차례이다. 파일 읽기 read() 시스템 콜 가장 잘 알려진 파일 읽는 방법은 read() 시스템 콜을 사용하는 것이다. 이는 POSIX.1에 정의되어 있는 메커니즘이기도 하다. read()의 기본적인 형태는 다음과 같다. 123#include ssize_t read(int fd, void *buf, size_t len);cs read()는 해당 함수가 호출될 때마다 파일 디스크립터(이하 fd)가 참조하는 파일의 현재 file offset에서 len 바이트만큼 buf로 읽어들인다. 읽어들이는 작업에 성공하면 buf에 쓴 바이트 숫자를 반환하고, 실패하면 이..

    1. 파일 열기 - open(), creat()

    개요 유닉스 기반 시스템에서는 거의 모든 것을 파일로 표현하다. 그러므로 파일을 읽고, 쓰고, 삭제하고, 생성하고... 하는 모든 파일 다루기는 아주 중요하다. [Linux System Programming] 시리즈의 포스팅의 첫 번째는 파일 입출력에 대해서 써보려 한다. 파일은 읽거나 쓰기 전이 반드시 열어야 한다. 이 열린 파일들은 파일 테이블이라는 목록이 있는데, 이곳에 프로세스별로 열린 파일들을 기록한다. 파일 테이블은 커널에 의해 관리된다. 파일 테이블은 파일 디스크립터(File Descripter, fd)라는 정수 값으로 인덱싱된다. 파일 테이블의 각 항목은 열린 파일에 대한 정보를 담고 있으며, 여기에는 메모리에 복사된 inode를 가리키는 포인터, 파일 위치와 접근 모드 등과 같은 각종 메..

    [2. 리눅스 운영 및 관리] 02 셸(Shell) (1) 개념 및 종류

    개념 시스템을 공부하는 사람이라면 누구나 셸(Shell)이라는 단어는 한 번쯤 들어본 적이 있을 것이다. 셸은 쉽게 말하면 사용자가 입력한 명령어를 해석하여 커널에 전달하는 역할을 수행하는 명령어 해석기(Command Interpreter)라고 정의할 수 있다. DOS의 Command.com과 동일한 기능을 수행하는 프로그램이다. 커널에 해석한 명령어를 전달할 때 셸은 커널과 사용자 간의 대화식 인터페이스를 제공하여 접근을 더 쉽게 도울 수 있다. 또한 셸 자체가 프로그래밍 기능을 가지고 있기 때문에 강력한 스크립트 언어이기도 하다. 더 부가적인 기능으로는 입출력 방향 재지정(redirection)과 파이프(pipe) 기능 제공과 포그라운드 / 백그라운드 프로세스 실행이 가능한 것이 있다. 종류 셸은 그..

    셸코드(Shellcode) 만들기

    보호되어 있는 글입니다.