엔지니어 230

poll 함수 예제

select는 특정 이벤트가 발생하면 running을 하지만 poll은 계속해서 주기적으로 돌면서 이벤트를 체크한다. int poll(struct pollfd *fds, nfds_t nfds, int timeout); 1인자값 : 이벤트 등록 변수 2인자값 : 체크할 pollfd의 개수 3인자값 : time out 시간 만약에 poll(0, 0, 1000); 이렇게 하면 sleep(1); 과 같이 1초 delay를 줄 수 있다. 출처: http://forum.falinux.com/zbxe/?document_srl=405838 위의 페이지에 따르면 POLL함수는 확인하고 싶은 여러가지 이벤트를 미리 등록해놓고 그 이벤트들이 발생했는지 확인할 수 있는 편리한 방법을 제공한다. POLL 함수의 PHASE는 5..

엔지니어 2012.07.26

사용가능한 클라이언트 포트번호 범위 찾기 (LINUX)

Server측에서 poll 함수를 가지고 주기적으로 돌고 있고 Client측에서 포트번호를 자동적으로 증가시켜가면서 붙는데 도대체 이 포트번호의 범위가 어딘지 모르겠다. 그래서 찾아봤다. sysctl이라고 시스템 커널과 관련하여 다양한 설정값을 확인할 수 있다. (루트권한) # sysctl -a |grep port sunrpc.max_resvport = 1023 sunrpc.min_resvport = 665 dev.parport.default.spintime = 500 dev.parport.default.timeslice = 200 net.ipv4.ip_local_port_range = 32768 61000 fs.nfs.nlm_tcpport = 0 fs.nfs.nlm_udpport = 0 따라서 요렇게 ..

엔지니어 2012.07.24

stderr를 stdout으로 출력하는 법

stadard error가 프로세스 수행하면 막 뜨는데 이걸 파일이나 어디 다른데다가 기록하게 할 수 없는지 방법을 찾아야했는데 이런게 있다. 괜찮네.. 간단하고.. std 관련 설명 [a] stdin - Use to get input (keyboard) i.e. data going into a program. [b] stdout - Use to write information (screen) [c] stderr - Use to write error message (screen) I/O streams 숫자의 의미 The Unix / Linux standard I/O streams with numbers: Handle Name Description 0 stdin Standard input 1 stdout ..

엔지니어 2012.07.24

GCC 컴파일러 에러 메세지 리스트(Error Message List)

이 문서는 GCC Version 2.7.2를 기준으로 하여 이 컴파일러가 출력하는 에러 [error]와 경고 [warning] 메시지를 한국어로 번역하고, 그 메시지를 발생할 수 있는 간단한 예제를 보이며, 간단한 해결책을 제시합니다. GCC Error (Warning) Message List Copyright © 1999 Seong-Kook Cin Seong-Kook Cin Jang-Chon Dong 21-2 Sun-Chon City 540-190 South KOREA Before reading this 이 문서는 GCC Version 2.7.2를 기준으로 하여 이 컴파일러가 출력하는 에러 [error]와 경고 [warning] 메시지를 한국어로 번역하고, 그 메시지를 발생할 수 있는 간단한 예제를 보..

엔지니어 2012.07.24

select 함수 예제

[다중 입출력 함수 select] I/O 처리하는 경우 non-blocking 으로 여러개의 file descriptor를 체크하면서 읽어들일 데이터가 어떤 상태인지 확인하다가, 어떤 변화가 생기면 그 file descriptor를 리턴하게 된다. 만일 아무런 변화가 없다면 block 상태에 걸려버리는데 이는 timeout을 지정해서 빠져나올 수 있게 한다. 이 기능을 가지고 sleep대신 select를 사용할 수도 있다. 개인적으로 이해가 잘 안되서 이래저래 좀 자세히 테스트 해봤다. int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 내용출처 : http://mintnlat..

엔지니어 2012.07.23

Unix Domain Socket 예제

내부 프로세스끼리 TCP 또는 UDP 프로토콜을 이용해서 통신하도록 도와주는 소켓이다. 아래의 예제를 보면 이 앞의 다른 IPC 통신과는 달리 특정 함수 API가 제공되지는 않는다. 기존의 TCP/IP 통신하는 소스코드와 거의 동일함. ================================================ 서버측 소스 코드 #include "sys/types.h" #include "sys/stat.h" #include "sys/socket.h" #include "sys/un.h" #include #include #include #include #define MAXLINE 1024 int main(int argc, char **argv) { int server_sockfd, client_s..

엔지니어 2012.07.23

티스토리에 Syntaxhighlighter 초간단 적용.

소스코드를 블로그에 삽입하기엔 기가 막히게 좋은것 같다. 5단계 만으로도 충분하다. 빨간글씨만 잘봐도 이해가 금방될것인데, 의문점은 댓글을 남겨 주시면 답변드리겠습니다. mediawiki에 적용하는것 보다 훨씬 쉽네요. 다른 블로그에도 많은 내용들이 있기에 간단하게 적용하는 순서만 나열한다. 1. 다운 받는다. http://alexgorbatchev.com/SyntaxHighlighter/download/ 이 웹페이지 맨윗줄에 Click here to download라고 있다. 2. 받은 파일 압축 풀어둔다. 3. 티스토리 'Admin' - '꾸미기' 'html/css 편집' 모드에 가서 파일 업로드 누른다. 그리고 올린다. [scripts]안의 모든 *.js 파일들 과 [styles] 폴더안의 모든 *..

엔지니어 2012.07.19

네트워크 속도체크 (iperf - network bandwidth check 옵션 설명)

TCP 를 통해서 Newwrok Throughput 을 확인하는 툴이다. (UDP도 가능) 영어로 된 옵션들 보기 좋으라고 간단하게 한글로 썼다. 출처 : http://openmaniak.com/iperf.php 클라이어트 모드 -c 옵션 주면 된다 #iperf -c 10.1.1.1 ------------------------------------------------------------ Client connecting to 10.1.1.1, TCP port 5001 TCP window size: 16384 Byte (default) ------------------------------------------------------------ [ 3] local 10.6.2.5 port 33453 con..

엔지니어 2012.07.18

semget. semop, semctl 함수 예제

간단하게 리소스 카운터라고 생각해도 되는데 일단은 데드락 피하기 위한 기술 중의 하나라고 한다.. 실제 어디다 써먹을지는 아직 모르겠지만.. 이거보다는 개인적으로 뮤텍스를 더 자주 쓰는듯 싶네.. 소스코드 출처 : http://forum.falinux.com/zbxe/?document_srl=428639 int semget ( key_t key, int nsems, int semflg ) 세마포어 식별자를 가지고 오는 함수다. key_t key 시스템에서 세머포어를 식별하는 키 번호 int nsems 세마포어 집합 내의 세마포어 개수로 접급 제한하려는 세마포어 자원의 개수 int semflg 동작 옵션 ( IPC_CREATE와 IPC_EXCL이 있다.) int semctl ( int semid, int ..

엔지니어 2012.07.17

mmap / munmap 함수 예제

파일이나 디바이스를 주소 공간 메모리에 대응시키는 방식인데 일종의 IPC 통신으로 사용가능하다. 매우 빠름. 출처 : 소스코드 http://www.cs.purdue.edu/homes/fahmy/cs503/mmap.txt void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset); 파일이나 디바이스를 응용 프로그램의 주소 공간 메모리에 대응시킨다. 1인자 => 시작 포인터 주소 (아래의 예제 참조) 2인자 => 파일이나 주소공간의 메모리 크기 3인자 => PROT 설정 (읽기, 쓰기, 접근권한, 실행) 4인자 => flags는 다른 프로세스와 공유할지 안할지를 결정한다. 5인자 => fd는 쓰거나 읽기용으로 열린 fd값..

엔지니어 2012.07.17