개발 썸네일형 리스트형 리눅스 환경 - 프로그램 인수 프로그램 인수 int main(int argc, char *argv[]) argc : 프로그램에 주어진 인수의 갯수argv : 인수들 자체를 나타내는 문자열들의 배열 myprog left right 'and center' -> 이렇게 myprog프로그램에 인수를 넣어 실행하면? argc : 4argv : {" myprog", "left", "right", "and center"} 이렇게 전달 된다. 이러한 명령줄 인수들은 프로그램에 정보를 전달하는 데 매우 유용하고 수많은 유틸리티 프로그램들도 이용한다. 예)sort -f filetar cvfB /tmp/file.tar 1024 등등 프로그램 인수 실습 args.c 실행 결과 더보기 자료 관리 - 메모리 관리 메모리 관리 - Unix는 메모리 관리에 아주 깔끔한 접근수단을 가지고 있었고, linux 도 역시 그 장점을 물려 받았다. 몇몇 임베디드 응용프로그램을 제외한 리눅스 응용프로그램들은 결코 물리적 메모리에 직접 접근하지 못한다. 응용프로그램의 관점에서 마치 자신이 물리적 메모리에 접근하는 것 처럼 보일 뿐 리눅스에 의해 제어되고 있다.- 리눅스를 응용프로그램이 방대한 메모리 공간에 투명한 방식으로 적접 접근할 수 있게 한다.또한 한 프로그램이 다른 프로그램의 메모리 공간에 접근하지 못하게 하는 보호장치가 있다. 응용프로그램이 물리적 메모리 용량보다 더 큰 메모리 공간에 접근할 수 있도록 한다. 간단한 메모리 관리 #include void *malloc(size_t size); 예제 - malloc를 이용.. 더보기 파일다루기 - 파일 디렉터리 접근 권한 관리 파일 디렉터리 접근 권한 관리 - chmod 시스템 호출 chmod는 파일이나 디렉터리의 접근 권한을 변경하는데 쓰인다. 맨앞에 d는 디렉토리인지 파일인지 알 수 있다. d라고 쓰여 있는 것은 디렉토리, 그 위치에 -로 쓰여있는 것은 파일이다. 두번째부터 rwxr-xr-x 이런 방식으로 써있는 문구들이 있다.이 문구들이 바로 접근 권한을 알려주는 문구들이다. 앞에서 부터 3글자 씩 나누어 user/group/다른user 이렇게 나누어 볼 수 있다. r은 read, w는 write, x는 execute 을 나타낸다. 예를 들어 맨 아래줄인 vmware-install.pl의 접근 권한을 해석해보면-rwxr-xr-x- : 파일rwx : 현재 user에서 읽고, 쓰고, 실행이 가능r-x : 현재 user gro.. 더보기 파일다루기 - 라이브러리 함수들 라이브러리 함수들- 저수준 시스템 호출들로 입, 출력을 수행하는 것은 대단히 비효율적이다. - 리눅스는 사용자 프로그램을 실행하는 모드에서 자신의 커널을 수행하는 모드로 전환해 시스템 호출을 처리한 후 다시 사용자 프로그램으로 돌아와야 하기 때문이다. 따라서 프로그램에서는 시스템 호출을 최소한으로 사용해야 하며, 사용할 때에는 최대한 많은 일을 한꺼번에 수행해야한다. - 하드웨어에는 한계가 있으며, 그런 한계 때문에 저수준 시스템 호출이 한 번에 읽거나 쓸 수 있는 블록의 크기에 제한이 가해진다.- 고수준의 인터페이스를 위해 리눅스 베포판은 여러 표준 라이브러리들을 제공한다. 표준 라이브러리 함수를 이용하면 위에서 언급한 문제점들을 피해 갈 수 있다. 좋은 예가 버퍼링 방식 출력을 지원하는 표준 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 ··· 13 14 15 16 17 다음