반응형

전체 글 799

프로그래머는 세계관이 좁은 경우가 많다.

뉴욕에서 실제 있었던 일이다. 한 경관이 있었는데, 원리원칙대로 업무를 처리하는 스타일이였다. 얘가 주차단속을 하게 되었는데, 모든 도로에 있는 모든 불법주차라고 생각되는 차들에 딱지를 붙였다. 결국 시 외곽으로 좌천.. 원리원칙대로 아주 부지런하게 일했는데, 왜 좌천되었을까 ? 불법주차단속은 "상징"이라는 걸 이해하지 못한 "하드한(딱딱한) 마음을 가진" 사람이기 때문이였다. 세계는 상징이라는걸 이해하지 못하면 저런 경관같은 삶을 살게 되는 거다. 위에 법을 예로 들었으니, 법으로 설명하자면 법은 집행그 자체가 목적인 시스템이 아니다. 상징적인 시스템이지. 이걸 이해하지 못하는 얘들이 쟤도 꽁초버렸는데 왜 나만 잡삼? 쟤들도 불법주차하는데 왜 나만 잡삼 ? 다른 얘들도 술마시고 운전하는데 왜 나한테만 ..

Stigmatized./Essay 2009.11.05

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 ..

IPC - 02. 신호 처리, sigaction 안정적 신호 인터페이스

/* * http://sosal.tistory.com/ * made by so_Sal */ 01.에서 봤던 kill 명령어를 더 자세히 보겠습니다. #include #include int kill(pid_t pid, int sig); 인자만 봐도 쉽게 알 수 있듯, kill 명령어에는 해당되는 프로세스 id와 명시적 sig를 전달합니다. #include int pause(void); 신호가 발생할 때까지 프로그램의 실행을 정지합니다. 신호를 받으면 호출되는 신호 처리부의 행동을 재개합니다. * 안정적 신호 인터페이스 sigaction #include int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); **** struc..

IPC - 01. 프로세스 신호 signal 주고받기

/* * http://sosal.tistory.com/ * made by so_Sal */ 프로세스 통신방법엔 대표적인 방법 3가지. siganl (신호), pipe (파이프), socket (소켓) 이 있다. signal은 돌맹이 pipe는 편지 socket는 소포에 비유할 수 있다. signal이 돌맹이에 비유한다는 것은, 짱똘을 던지면 내가 너에게 화가났다. 조약돌을 던지면 내가 너를 사랑한다. 등등.. 행동에 대해 미리 약속을 해놓은 후 그 행동을 통하여 서로 대화를 나누는 방법이랄까? 가수들이 무대에서 무슨 손가락 모양을 하면서 비밀스런 애인에게 사랑을 전달하는 방법도 이에 포함되겠다 ^-^;; pipe나 socket에 대한 비유는..음.. 이글은 SIGNAL 관련 글이므로 생략하겠습니다 ㅋㅋ ..

System - 05. wait() 프로세스 동기화

/* * http://sosal.tistory.com/ * made by so_Sal */ fork 함수로 생성된 자식 프로세스는 독립적으로 실행됩니다. 따라서 부모프로세스는 자식프로세스가 하는 일을 알 수 없고, 변수의 공유나 자식프로세스가 계속 살아있는지 등에 대한 정보를 기본적으로는 알 수 없습니다. #include #include pid_t wait(int *stat_loc); //call by reference stat_loc은 종료된 프로세스의 pid 값을 리턴하여 보통 pid_t 변수에다 저장합니다. ex) int stat_loc; pid_t child_pid; child_pid = wait(&stat_loc); wait 시스템콜은 자식프로세스중 하나가 종료될 때까지 부모 프로세스를 기다리게..

반응형