본문 바로가기

UNIX_LINUX_C_C++

(114)
Linux 에서 pthread를 최대 생성가능한 thread 수를 측정 원문: http://minzkn.wowdns.com:2744/phpBB2/viewtopic.php?t=582 이 소스는 그냥 Linux 에서 pthread를 이용하였을때 최대 생성가능한 thread 수를 단순한 방법론으로 측정하는겁니다. 제 Desktop PC는 최대 382 개가 나오는군요. (에게~ 요것밖에 안되~? ㅋㅋ) 하지만 소스상에서 stack size를 어떻게 사용하는가에 따라서 시스템에 황금비율의 최대 생성갯수를 얻을수 있는 경우가 있습니다. 각자 그 부분은 해보시면 흥미로운 결과를 체험할수 있을거란 생각이 드는군요. main.c 코드:/* Copyright (C) Information Equipment co.,LTD. All rights reserved. Code by JaeHyuk Cho..
C에서 C++ 작성한 라이브러리를 사용하고자 한다면? 출처 : http://blog.naver.com/dreamakr?Redirect=Log&logNo=80003636883친구넘한테 전화가 왔다. C에서 C++에서 작성한 라이브러리를 사용하고 싶다네. C 나 C++ 소스가 컴파일 될때 우리가 선언한 함수들은 우리가 선언한 이름 그대로 남아 있지 않다. 컴파일러가 파라미터나 calling convention에 따라서 이름을 바꾸는데 이렇게 이름을 바꾸는 것을 name mangling 이라고 한다. 예를 들자면 c++같은 경우를 보면 함수 overriding이 가능하다.즉 같은 이름으로 파라미터만 다르게 선언해서 사용할수 있다는 예기다. 그럼 컴파일러는 이 같은 이름에 놈들을 어떻게 구분하느냐 파라미터에 type을 가지고 그 함수 명을 변경해 버린다. 다른 함..
bind error 방지 하기 int make_sock(int port, int users) { int sock; struct sockaddr_in my_addr; int iSockOpt; if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("SOCKET"); return (-1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(port); my_addr.sin_addr.s_addr = INADDR_ANY; bzero(&(my_addr.sin_zero), 8); // set the rest of the struct // prevent bind error iSockOpt = 1; setsockopt(sock, SOL_SOCKET,..
Poll_thread 소켓 출처 : http://blog.naver.com/pigeonkim?Redirect=Log&logNo=140037278234Poll함수를 이용하여 클라이언트 접속 여부만 확인하고 데이터 처리는 Thread에서 한다.#include #include #include #include #include #include #include #include #include #include #include #include #define BUFSIZE255intnread; intstate = 0; char*Client_add; charmsg[100];socklen_t clilen;intclnt_number = 0; intclnt_sockfds[10]; pthread_mutex_t mutx;structpollfd client[..
extern의 사용 원문 : http://blog.naver.com/worldts/60003783629출처 : http://blog.naver.com/endfirst?Redirect=Log&logNo=20007573126extern의 사용법은 크게 두가지가 있죠. 1. 다른 파일에 선언된 변수나 함수를 선언할 때 ◆ 기본적인 얘기 extern이라는 것은 저장공간에 대한 선언에 사용되는 키워드로서, 여러개의 소스파일에 대해서 작업할 때 필요한 것입니다. 무슨 얘긴고 하니... 쉽게 말해서 다른 파일에 선언된 변수가 있다 고 선언하는 겁니다. [file1.cpp] int x = 1; int f() { /* do something */ } int y = 2; extern z; [file2.cpp] extern int x; int..
GDB를 이용한 디버깅 GDB를 이용한 디버깅GNU 소스-레벨 디버거Fifth Edition, for GDB version April 1998Richard M. Stallman and Roland H. Pesch 초벌 번역 : 정강훈 차례GDB 개요 자유 소프트웨어 GDB 공헌자들 간단한 GDB 세션 GDB에 들어가고 나가기 GDB 실행 파일들 선택하기 모드 선택 GDB 종료하기 Shell 명령어들 GDB 명령어들 명령어 구문 명령어 완성 도움말 얻기 GDB에서 프로그램 실행시키기 디버깅을 위한 컴파일 프로그램 시작하기 프로그램 인자들 프로그램 환경 프로그램 작업 디렉토리 프로그램 들어가고 나가기 이미 실행되고 있는 프로세스 디버깅 자식 프로세스 죽이기 추가적인 프로세스 정보 다중 쓰레드인 프로그램 디버깅하기 다중 프로세스를 ..
gcc와 make 강좌 gcc와 make 강좌1. 시작하면서1.1 C 와 gcc 와의 관계 1.2 gcc 에 대한 이야기 하나 2. gcc 강좌2.1 gcc 에 대한 기본 이해 2.2 gcc 사용하기 3. make 강좌3.1 머릿말 3.2 make 시작해 봅시다. 3.3 꼬리말 규칙, 패턴 규칙 3.4 GNU make 확장 기능 3.5 매크로(Macro) 기능 3.6 마지막 주의 사항 3.7 잠시 마치면서 1. 시작하면서1.1 C 와 gcc 와의 관계 세상에서 제일 뛰어난 C 컴파일러 중 하나인 gcc 는 리눅스나 기타 자유 운영체제에 있어 커다란 보배가 아닐 수 없습니다. 우리가 알고 있는 유닉스가 C 언어로 거의 다 만들어졌듯이 리눅스의 모국어는 바로 gcc 입니다. 사실 많은 분들이 리눅스 해커(hacker), 구루(gu..
GDB 명령요약 출처 : http://blog.naver.com/endfirst?Redirect=Log&logNo=20007573126디버거란 프로그램 개발 도구로써, 프로그램을 개발하다가 에러가 발생하면 발생 위치 및 발생이유를 쉽게 찾을 수 있도록 도와 준다. [gdb] 명령 요약 프로그램 실행과 트레이스(trace)에 관련된 명령들 --------------------------------------------------------- run 현재의 인수를 사용하여 프로그램을 실행 run 새로운 를 가지고 프로그램을 실행 continue 현재 위치에서 프로그램을 계속 실행시킨다. (약자) c, cont, (dbx)return next 한 줄씩 실행 시킨다. 이 때 함수를 포함하고 있으면 함수를 수행시킨다. (약자) ..