개발/Linux 썸네일형 리스트형 파일다루기 - 라이브러리 함수들 라이브러리 함수들- 저수준 시스템 호출들로 입, 출력을 수행하는 것은 대단히 비효율적이다. - 리눅스는 사용자 프로그램을 실행하는 모드에서 자신의 커널을 수행하는 모드로 전환해 시스템 호출을 처리한 후 다시 사용자 프로그램으로 돌아와야 하기 때문이다. 따라서 프로그램에서는 시스템 호출을 최소한으로 사용해야 하며, 사용할 때에는 최대한 많은 일을 한꺼번에 수행해야한다. - 하드웨어에는 한계가 있으며, 그런 한계 때문에 저수준 시스템 호출이 한 번에 읽거나 쓸 수 있는 블록의 크기에 제한이 가해진다.- 고수준의 인터페이스를 위해 리눅스 베포판은 여러 표준 라이브러리들을 제공한다. 표준 라이브러리 함수를 이용하면 위에서 언급한 문제점들을 피해 갈 수 있다. 좋은 예가 버퍼링 방식 출력을 지원하는 표준 I/O라.. 더보기 파일 다루기 - 시스템 호출과 장치 드라이버 시스템 호출과 장치 드라이버 - 파일과 장치의 접근 및 제어에 쓰이는 함수들이 몇 가지 있는데 이러한 함수가 시스템 호출(system call)에 속한다. 이 시스템 호출은 unix/linux가 직접 제공하는 것으로, 프로그램과 운영체제 사이의 인터페이스 역할을 한다.- 운영체제의 핵심부인 커널(kernel)에는 여러 개의 장치 드라이버(devece driver)들이 있다. 장치 드라이버는 시스템 하드웨어의 제어를 위한 저수준 인터페이스들의 모음이다. - 하드웨어의 독특한 특성들은 일번적으로 ioctl(I/O control의 약자)이라는 시스템 호출을 통해서 파악하거나 제어할 수 있다.-/dev에 있는 장치들도 디스크 파일을 위한 것들과 동일한 시스템 호출들을 이용해서 이들을 열고, 읽고, 쓰고 닫을 수.. 더보기 파일 다루기 - 리눅스 파일 구조 리눅스 파일 구조- 리눅스에서는 모든것이 파일이다!- 디스크파일, 직렬포트, 프린터, 기타 주변장치 들을 마치 파일을 사용하는 것처럼 사용할 수 있다.- 디렉터리 역시 파일 종류이다. 1. 디렉터리- 시스템은 파일들의 inode번호를 이용하여 접근하는데 이 파일들의 inode 번호들과 이름을 담은 하나의 파일이다. ( 파일의 inode번호는 ls -i 명령어를 이용하여 볼 수 있다.)- 파일들은 항상 특정한 디렉터리에 속하고 그 디렉터리도 다른 디렉터리도 담을 수 있다. 이렇게 트리형태의 파일 시스템 계통구조가 만들어진다. - 일반적으로는 홈 디렉터리에 저장된다. /home/bp 의 경로 여기서 bp는 유져네임 줄여서 ~bp로 나타내기도 한다. 표준라이브러리 함수들은 셸의 틸트 단축 표기를 이해하지 못한.. 더보기 실습 2 : 정적 라이브러리 1. 각 함수마다 소스 파일 만들기 - fred.c#include void fred(int arg){printf("fred: we passed %d\n", arg);}- bill.c#include void bill(char *arg){printf("bill: we passed %s\n", arg);} 2. 함수들을 개별적으로 -c옵션을 주어 컴파일 해서 목적파일을 만듬. (-c옵션을 주지 않으면 컴파일러는 실행파일을 만드려고 하고 main함수가 없기 때문에 컴파일이 실패하게 된다.)gcc -c bill.c fred.c => 목적파일 생성ls *.o => 목적파일 확장자인 .o를 가진 파일을 찾아 목적파일이 제대로 만들어 졌는지확인 billo.o fred.o => .c파일과 같은 이름을 가진 .o파일이 보.. 더보기 개발 시스템의 개요 개발 시스템의 개요 1. 응용프로그램 - 일반적으로 응용프로그램들은 각자 자신만의 개별적인 디렉터리에 저장되나 시스템이 제공하는 기본 응용프로그램들은 /usr/bin에 들어있다. 구체적인 호스트 컴퓨터나 지역네트워크를 위해 시스템관리자가 추가한 응용프로그램들은 /usr/local/bin이나 /opt에 있는 경우가 많다.- 관리자들은 /opt나 /usr/local을 선호한다. 그러면 서드파티 제작사가 제공했거나 나중에 추가한 파일들과 시스템이 제공한 파일들을 구분할 수 있기 때문이다. 이렇게 되면 운영체제 업그레이드 할 때 편하다. /opt와 /usr/local만 보존하면 되기 때문이다. 만약 시스템 전역 응용프로그램을 만든다면 /usr/local 에서 프로그램을 설치하는 것이 바람직하다.- GNU컴파일러.. 더보기 실습 1 : Hello World Hello.c #include #include int main(){printf("Hello World\n);exit(0);} ----------------- gcc -o hello hello.c ==> gcc 컴파일러를 이용하여 hello.c 파일을 hello라는 실행파일로 컴파일 -o는 컴피일러에게 실행파일의 경로와 이름을 알려주는 용도. 이옵션을 생략하면 a.out를 실행한다../hello ==> 실행파일이 PATH 변수에 있어야 실행된다. 그렇기 때문에 ./을 넣어 현재 디렉토리에서 찾으라는 표시를 해둔다.Hello World ==> 출력 확인 실행 결과 실행파일 앞에 ./을 붙이지 않았을때 PATH에 현재 디렉토리인 ~/Documents/LinujxTest/chapter1이 등록되지 않아 hell.. 더보기 리눅스 프로그래밍 리눅스 프로그래밍- 리눅스 프로그램들은 크게 두 가지 특별한 파일 형식으로 나뉜다. 하나는 실행 가능 파일(executable), 다른 하나는 스크립트(script)이다.- 실행파일(executable) : 컴퓨터가 직접 실행 할 수 있는 프로그램. windows 에서 .exe파일- 스크립트(script) : 다른 프로그램(인터피리터)이 실행할 명령들의 집합. windows에서 .bat나 .cmd파일 또는 인터피리터 방식의 BASIC프로그램 등에 해당한다.- 리눅스에서는 실행파일 또는 스크립트의 이름이나 확장자에 특별한 조건이 붙지 않는다. 심지어 확장자가 없어도 된다! 주어진 파일이 실행 가능한 프로그램인지는 파일 시스템 특성으로 구분이 된다. - 리눅스 시스템에 로그인한 사용자는 셀 프로그램(대채로 .. 더보기 리눅스(Linux)란? 리눅스(Linux)란?- 리눅스는 UNIX류 커널(Kernel, 운영체제의 저수준 핵심부)의 한 구현으로, 자유로이 배포되고 UNIX에서 영감을 얻은것이기 때문에 리눅스 프로그램들과 UNIX프로그램들은 상당히 비슷하고 UNIX의 프로그램들중 상당 부분이 리눅스에서 실행이 가능하다.- 리눅스는 리누스 토발즈(Linus Torvalds)가 인터넷상의 여러 UNIX 프로그래머들의 도움을 받아 헬싱키 대학교에서 개발할 것이다. 원래는 타넨바움(Andy Tanenbaum)의 MINIX(작은 UNIX류 운영체제)에서 영감을 얻어 시작한일 취미삼아 시작한일! 현재는 완벽한 시스템이 되었다...(나도 취미 삼아 시작해봐야지 ㅎㅎ) GNU 프로젝트와 자유 소프트웨어 재단- 리눅스는 수많은 프로그래머들이 수많은 응용프로그.. 더보기 이전 1 2 3 4 다음