TCP/IP accept() Interrupted system call Server & Clinet에서 Server가 accept를 하고 있다가 Client 요청이 왔을때 fork()을 한다. Sever는 다시 accept()함수에서 block된다. 그런데 예측하지 못한 원인에 의해서 Client가 강제 종료되었을때 Server에서는 미리 등록해놓은 singnal 처리 함수를 호출한다. 근데 이때 부모 프로세스의 accept()함수도 return을 하게된다. .. C언어 2011.05.03
Google CPU Profiler download : http://code.google.com/p/google-perftools/downloads/list toturial : http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html 설치방법 tar -zxvf google-perftools-1.6.tar.gz cd google-perftools-1.6 ./configure make su make install 사전 작업 1. 프로파일링을 워하는 프로그램 컴파일시에 -lprofiler를 같이 컴파일한다. 2. <google/profiler.h>.. C언어 2010.08.30
strncpy vs memcpy 블로그에서 strncpy와 memcpy 중 memcpy가 더 빠르다고 본 기억이 있어서 확인차원에서 구글 codesearch를 빌려 확인 ------------------------------------------------------------------- STRNCPY ------------------------------------------------------------------- char * strncpy(char *dst, const char *src, size_t n) { if (n != 0) { char *d = dst; const char *s = src; do { .. C언어 2010.08.27
introduce to TC( Tokyo cabinet ) tokyo cabinet이라는 경량 db lib를 간단히 소개 http://fallabs.com/tokyocabinet/spex-en.html download tokyocabinet-1.4.46.tar.gz (2010/08/25현재)>> ./configure >> make >> make install 우선 tc를 사용하기 위해서 아래와 같이 include파일을 기술 ----------------- 아래 ---------------- #include <tcutil.h> #include <tcadb.h> #include <s.. C언어 2010.08.25
label xxx defined but not used label xxx defined but not used 이런 에러가 발생해서 구글을 열심히 뒤져 찾아봤더니 멍청한 실수였다는 것을 뒤늦게 알았다. switch() { FRONT : break; BACK : break; } 간단하게 하면 위와 같은 코드인데 금방 머가 잘못되었는지 눈에 들어온다.( case가 빠졌다 ) 컴파일은 되고 워닝만 출력되는데 컴파일.. C언어 2010.05.18
bit counting 어떤 값의 존재 유무만 표시할 때 종종 bit를 on off 시켜셔 표현하는 경우가 있다. 메모리가 흔해지긴 했지만 여전히 메모리는 다른 것과 비교해서 값비싼 자원이기도 하고 경우에 따라서 속도 문제때문에 사용하기도 한다. 정수형 변수 하나에 최대 32개 값을 on off 시킬수 있는데 가끔 이 정수 변수에 on.. C언어 2010.04.28
thread pool thread pool을 어떻게 구현하는지 살펴보자 일단은 지정한 개수 만큼 thread를 생성하자 for( i = 0; i < 10; i++ ) pthread_create( &tid, NULL, &thread_main, (void*)arg ); 이렇게 10개의 thread를 생성시켜 놓는다. 만약 만들려고 하는것이 daemon이라면 client 에서 접속 요청을 할것이고 접속 요청을 daemon에서 받기 위해서는 socke.. C언어 2010.01.15
메세지 크래커 윈도우즈 코드를 보다보니 평상시에 보기 힘든 코드가 있어서 간단히 소개를한다. 검색엔진에서 찾아보니 '메세지 크래커'라는 이름으로 사용을 하고 있습니다. 비주얼 스튜디오를 설치하면 windowsx.h라는 파일을 찾아볼수가 있는데 이 파일을 열어보면 /****** Message crackers ***************************************.. C언어 2009.08.10
sendfile #include <sys/sendfile.h> ssize_t sendfile(int out0_fd, int in_fd, off_t *offset, size_t count); DESCRIPTION 파일 디스크립터와 다른 것으로 데이터를 복사할수 있다. 하나의 파일 디스크립터나 두개의 파일디스크립터중에 소켓이 될수도 있다. in_fd는 파일을 열어서 읽을 파일 디스크립터이고 out_fd를 파일을 열어서 쓸 파.. C언어 2009.08.05
DOXYGEN & graphviz 리눅스에서 doxygen & graphviz를 연동해서 사용하는 법을 간단히 소개 DOXYGEN INSTALL 링크 : http://www.stack.nl/~dimitri/doxygen/download.html 파일 : doxygen-1.5.9.linux.bin.tar.gz 설치방법( ROOT ) tar -zxvf doxygen-1.5.9.linux.bin.tar.gz cd doxygen-1.5.9 ./configure make && make install GRAPHVIZ INSTALL 링크 : http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-2.. C언어 2009.06.10