본문 바로가기

분류 전체보기

C 라이브러리 - 패턴 매칭 사용 예제 regex_t rx; regmatch_t pmatch[2]; unsigned len = strlen((unsigned char *)ptr); if (len 더보기
C 라이브러리 - 패턴 매칭 1. 정규식 매칭 GNU C 라이브러리는 정규식을 매치하기 위한 두 개의 인터페이스를 제공한다.하나는 POSIX2 인터페이스이고 다른 하나는 GNU 시스템이 오랫동안 가지고 있었던 것이다두개의 인터페이스는 헤더파일 "regex.h"에 선언되어 있다. 데이터 타입 : regex_t 이것은 컴파일된 정규식을 저장하는 오브젝트 타입이다. 그것은 실제로 구조체이다. int regcomp (regex_t *compiled, const char *pattern, int cflags)regcomp 함수는 문자열과 매치시키는데 사용하는 regexec를 사용할 수 있도록 정규식을 데이터 구조체로 "컴파일"한다. 컴파일된 정규식의 형식은 매칭(matching)에 효율적이게 만들어졌다. regcomp는 *compiled에 .. 더보기
조건 변수 , 뮤텍스 pthread_cond_wait는 thread를 휴먼 상태로 만듭니다, (해당 라인에서 thread의 동작이 멈추는 상태) 이 말은, 일종의 sleep 상태라고 생각해도 되는데, 휴먼 상태에 빠져 있는 이 thread는 다른 thread에서 pthread_cond_signal을 이용해서 깨웁니다, (깨워지게 되면, 그때 부터 pthread_cond_wait 의 다음 라인 코드가 실행됩니다) 그렇다면 다수의 pthread_cond_wait가 존재한다면, pthread_cond_signal은 어떤 pthread_cond_wait를 깨울까요? 걱정하지 마시라~, 답은 아래 있습니다. 일단 함수 생김새를 살펴보면 아래와 같고, int pthread_cond_signal(pthread_cond_t *cond); .. 더보기
멀티 IO 웹 서버 import socketimport osimport timeimport reimport urllibimport select BACKLOG = 100epoll = select.epoll() class MainServer :def __init__(self):svrsock = 0;os.chdir("/home/ohhyunkyu/httpd")self.conn = 0;def ServerRun (self):svrsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)svrsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# socket bindsvrsock.bind(('192.168.201.120',80))svrsock... 더보기
쓰레드를 활용한 웹 서버 '''Created on 2013. 12. 10. @author: root'''import socketfrom threading import Threadimport osimport timeimport reimport urllibimport select BACKLOG = 100epoll = select.epoll() # socket Programing Ref #http://jinpyolab.tistory.com/1 # http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Python/Socket ## Thread RECV & IO #### class NewServer : def __init__(self) : svrsock = 0; def Bind(self) : s.. 더보기
멀티 IO / SubProc 활용한 웹 서버 '''Created on 2013. 12. 10. @author: root'''import socketfrom threading import Threadimport osimport timeimport reimport urllibimport selectfrom multiprocessing import Process,Queue BACKLOG = 100epoll = select.epoll()queue = Queue() # socket Programing Ref #http://jinpyolab.tistory.com/1 # http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Python/Socketconnections = {}responses = {} #### Mult.. 더보기
라이브러리 활용 예제 1. 파이썬 모듈 내에서 디렉터리 이동 os.chdir("/home/ohhyunkyu/httpd") 2. 소켓 연결 svrsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #socket Optionsvrsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) svrsock.bind(('localhost',80))# MAC CONNECT CNT svrsock.listen(BACKLOG) 3. epoll 활용 epoll 은 다양한 쓰레드 및 서브 프로시저를 제어할 수 있다epoll 에 register 함수를 이용해서 등록 epoll.register(svrsock.fileno(),select.EPOLLIN)이벤트.. 더보기
파일 속성 얻기 SHGetFileInfo는 매우 유용한 API다 어찌나 친절한 지 File의 정보를 몽땅 건내준다 (심지어 아이콘 정보까지 말이다) 여기서는 간단하게 파일 속성을 알기 위한 용도로 사용했다 CString strDrive; SHFILEINFO shInfo; .... SHGetFileInfo(strDrive,0,&shInfo,sizeof(SHFILEINFO),SHGFI_TYPENAME | SHGFI_ATTRIBUTES); .... if ( !(shInfo.dwAttributes & SFGAO_HIDDEN) ) // 숨김파일은 제외한다 코딩 여기서 붉은색 플래그는 #define SHGFI_ICON 0x000000100 // get icon #define SHGFI_DISPLAYNAME 0x000000200 /.. 더보기
여러가지 팁 1. 특정 디렉토리 뒤지기 지정한 디렉토리에 있는 모든 파일을 찾아내는 코드를 만들려면 어떻게 해야 합니까 ? 이 때 사용할 수 있는 API가 바로 FindFirstFile과 FindNextFile, FindClose라는 API들입니다. 사용 예제는 다음과 같습니다. WIN32_FIND_DATA findFileData; HANDLE hFileHandle; // szDir에 뒤지고자 하는 디렉토리의 경로명을 준다. 예를 들면 "C:\\TEMP\\*.*" // 찾아진 파일의 속성은 findFileData의 dwFileAttributes를 살펴본다. hFileHandle = FindFirstFile(m_szDir, &findFileData); if (hFileHandle != INVALID_HANDLE_VAL.. 더보기
리스트 컨트롤 내용 파일로 쓰기 CStdioFile file; // 파일 열기 file.Open("C:\\Test.txt", CFile::modeWrite | CFile::modeCreate | CFile::typeText); CHeaderCtrl* pHeader = (CHeaderCtrl*)m_ctrFilterList.GetHeaderCtrl(); // 헤더컨트롤 얻어오기 int nRow = m_ctrFilterList.GetItemCount(); // Row 갯수 int nCol = pHeader->GetItemCount(); // Col 갯수 CString text; for(int i = 0; i < nRow; i++) { text = ""; for(int j = 0; j < nCol; j++) { text += m_ctrFilt.. 더보기