OS/리눅스 기초

    12. stdio의 동작 확인

    cat2.c 프로그램을 strace로 조사해보자. stdio 버퍼링 확인) dev@dev-desktop:~/codeexample$ strace -e trace=open,read,write,close ./cat data >/dev/null close(3) = 0 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200l\2\0\0\0\0\0"..., 832) = 832 close(3) = 0 read(3, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"..., 2048) = 2048 write(1, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"..., 2048) = 2048 read(3, "aaaaaaaaaaaaaaaaaaaa..

    8. stdio로 cat 명령어 만들어보기

    - 소스 #include #include int main(int argc, char *argv[]){ int i; for(i = 1; i

    6. 스트림 관련 라이브러리 함수(stdio)-1

    6. 스트림 관련 라이브러리 함수(stdio)-1

    표준 입출력 라이브러리 : standard I/O library 줄여서 stdio, libc의 큰 비중을 차지하는 만큼 중요한 라이브러리 1. stdio 1) 버퍼링 stdio는 커널 수준의 스트림을 쉽게 사용할 수 있는 인터페이스를 제공한다. 시스템 콜 read()는 스트림에서 우리가 지정한 buffer에 지정한 크기만큼 읽어 들인다. 반면, stdio는 독자적인 버퍼(buffer)를 사용한다. 버퍼란, 일시적으로 데이터를 저장하는 장소를 말한다. 그래서 시스템 콜 read()를 사용해서 적정한 크기의 데이터를 버퍼에 읽어 들이고, 프로그램에서 요구하는 만큼을 다시 반환해 준다. 이처럼 버퍼를 사용해서 데이터를 주고받는 것을 버퍼링(buffering)이라고 한다. write(2) 또한 비슷하지만 몇가지..

    1. gcc로 컴파일하기 & 커맨드라인 인자

    dev@dev-desktop:~/hello$ gcc -dumpversion Command 'gcc' not found, but can be installed with: sudo apt install gcc dev@dev-desktop:~/hello$ sudo apt-get install build-essential -y [sudo] dev의 암호: 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다: libllvm7 Use 'sudo apt autoremove' to remove it. 다음의 추가 패키지가 설치될 것입니다 : dpkg-dev fakeroot g++ g++-7 gcc gc..

    책소개

    책소개

    목차 제I부 리눅스의 구조 제1장 리눅스 프로그래밍 시작하기 1.1 책의 개요 1.2 프로그래밍 환경 준비 1.3 gcc를 사용한 빌드(1) 1.4 gcc를 사용한 빌드(2) 1.5 커맨드라인 인자 1.6 개발 환경 이야기 1.7 정보를 얻는 방법 제2장 리눅스 커널의 세계 2.1 운영체제 2.2 라이브러리 제3장 리눅스의 세 가지 중요 개념 3.1 파일 시스템 3.2 프로세스 3.3 스트림 3.4 리눅스의 세 가지 중요 개념 정리 제4장 리눅스와 사용자 4.1 사용자와 그룹 4.2 셸과 단말 제II부 리눅스 프로그래밍의 근간 제5장 스트림 관련 시스템 콜 5.1 이번 장에서 다루는 내용 5.2 파일 디스크립터 5.3 표준 입력, 표준 출력, 표준 에러 출력 5.4 스트림 읽기 및 쓰기 5.5 파일 열기..