2009/11 14

cp. 파일 복사 프로그램 copy

/* * http://sosal.tistory.com/ * made by so_Sal */ cp.c 파일 복사 프로그램 소스입니다. 가장 기본적인 소스입니다. #include #include #include #include #include #include int main(int argc,char* argv[]){ if(argc!=3){ printf("%s [file name] [copy file name]\n",argv[0]); exit(0); } char *cmd1; char *cmd2; cmd1 = argv[1]; //file name cmd2 = argv[2]; //copy file name char block[BUFSIZ]; int in, out; int nread; in = open(cmd1,O..

Linux/Linux_Source 2009.11.01

Linux 간단한 ls 디렉토리 출력 프로그램 구현

/* * http://sosal.tistory.com/ * made by so_Sal */ LINK 2){ perror("Usage :: _ls [Directory] \n"); exit(EXIT_FAILURE); } char* position; position = argv[1]; // 메인함수는 디렉토리 목록을 출력할 위치를 _ls(position,0); // 인자로 받아 _ls 함수의 매개변수로 전달하는 일만 수행합니다. exit(0); } void _ls(char* pos,int depth){ //depth는 처음 0이고, 디렉토리 출력중 새로운 디렉토리를 만나면 //depth를 증가시켜 재귀적으로 함수를 다시 호출합니다. DIR *dp; // 실제 파일을 가리키는 포인터 struct dirent *..

Linux/Linux_Source 2009.11.01

C++. template 템플릿. 자유로운 자료형 만들기

/* * http://sosal.tistory.com/ * made by so_Sal */ 시작하자마자 소스를 펼쳤어요. 간단한 소스를 4개 볼것입니다. 이 소스들만 분석하면 템플릿이 어떤건지 정확하게 이해가 될거같네요!! ㅎㅎ 여튼 탬플릿을 사용하는 목적은 자유로운 변수를 만들기 위함입니다. 어떠한 자료형이 들어오던 간에 전부다 알아서 처리해줍니다. /* * template == template 둘은 같은 의미입니다. * class :: C++ 스타일, typename a :: C 스타일 */ #include using namespace std; template //print라는 함수인데 위에 이상한게 있네요. void print(a data){ //함수 인자는 위에 템플릿 옆 class a. a라는 ..

BOF - 01.buffer over flow? 메모리 구조, 레지스터

/* * http://sosal.tistory.com/ * made by so_Sal */ :: 버퍼 오버플로우 :: 어떤 메모리 공간에 사용자가 데이타를 입력할 수 있는 기회가 생겼을 때, 시스템이 원하는 메모리 공간 이상의 코드를 대입하여 ret라는 녀석을 조절하여 시스템에게 사용자가 원하는 행동을 하도록 합니다. 이게 무슨뜻이냐면.. 천천히 내려갑시다. 아래는 시스템 메모리 구조를 나타낸다. 환경변수, 프로그램 인자값중 문자열 환경변수, Argv 포인터 인자값의 수 스택 영역. heap 영역. 초기화 되지 않은 변수 초기화 된 변수 읽을 수 있는 부분이 있으나, 변조될 경우 Segfault 발생 인텔 80x86 CPU 레지스터 - 범용 레지스터 - AX - Accumulator :: 산술연산 BX ..