목록work (62)
no swim no life
1. ulimit -a 커맨드로 프로세스당 파일 수 확인 [root@hyori ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited max nice (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 8192 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 max rt priority (-r) 0 stack size (k..
변수의 종류 전역변수 정적변수(static) 자동변수(지역변수, 매개변수) 외부변수(extern) 저장공간의 종류 코드영역 데이터영역: 전역변수, 정적변수, 초기화된 배열과 구초제 힙영역: malloc(), new 동적메모리할당, 포인터 스택영역: 자동변수, 복귀번지, 배열, 포인터변수 extern 전역변수는 프로젝트 내의 동일한 메모리 공간을 사용한다. extern으로 declaration 해야 되는곳에 값을 넣게 되면 definition이 되어 링크 에러가 발생할 수 있다. file_a.c int test = 3; file_b.c extern int test; // declaration extern int test = 3; // definition 전역변수는 각각의 오브젝트 파일마다 메모리 공간을할당..
한빛의 "IT EXPERT, 리눅스 커널 프로그래밍" 에 포함되어 있는 2.6 커널 예제 코드를 보면, 사용자 메모리 공간의 유효성 검사에 verify_area() 함수를 사용한다. 하지만, verify_area() 함수는 2.4 커널에 사용하던 함수이며, 2.6 커널에서 access_ok()로 대체되었다. 사용방법은 verify_area와 동일하다. Ref : http://blog.naver.com/wjdguddnr00?Redirect=Log&logNo=20039488950
1. 네트워크 환경a : 10.1.48.1 (VMware 설치)b : 10.1.48.44 : 48.1 PC에 설치되며 외부와 직접 통신 가능 2. 로컬영역연결(a)에 다음을 추가 - NWLink NetBIOS - NWLink IPX/SPX/NetBIOS 호환 트랜스포트 프로토콜 - VMware Bridge Protocol 3. VMware - Edit 메뉴의 Virtual Network Settings - Automatic Bridging 탭의 automatic choose an available physical network adapter to bridge to vmnet0 에 체크 4. OS 설치 시(b) 가상 하드웨어의 네트워크 설정 - Bridged : Connected directly to th..
#include int main() { FILE *fd = NULL; unsigned long var = 0; var = 12345; fd = fopen ( "test.dat", "wb" ); fwrite( &var, sizeof(unsigned long), 1, fd); fclose( fd ); var = 0; fd = fopen ( "test.dat", "rb" ); fread( &var, sizeof(unsigned long), 1, fd); fclose( fd ); printf( "result : %u \n", var ); return 0; } 결과 : result : 12345 test.dat 파일 내부 1. text mode 90 2. hex mode 39 30 00 00
기본중의 기본 #include //#pragma pack(push) // alignment 저장 //#pragma pack(1) // alignment 변경 using namespace std; struct TA { char cA; int nB; char cC[3]; }; int main( int argc, char* argv[] ) { printf("Hello World!\n"); struct TA tA; cout
커널모드에서의 파일삭제는 이놈으로 해결했다. call_usermodehelper Name call_usermodehelper -- start a usermode application Synopsis int call_usermodehelper (char * path, char ** argv, char ** envp, int wait); Arguments path pathname for the application argv null-terminated argument list envp null-terminated environment list wait wait for the application to finish and return status. Description Runs a user-space appl..
1. 소스 다운로드 (Fedora6) http://download.fedora.redhat.com/pub/fedora/linux/core/6/source/SRPMS/kernel-2.6.18-1.2798.fc6.src.rpm 2. RPM 설치 [fc6@localhost] # rpm -ivh kernel-2.6.18-1.2798.fc6.src.rpm 3. 커널 패키지 생성 [fc6@localhost] # rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec --target 으로 설정된 경로에서 커널 소스를 확인할 수 있다. ps. rpmbuild가 없다면 설치해야 한다.
Memory Size ( Kb ) Page ( 4Kb ) Array (Stack) 8 Kb 2 page kmalloc (Heap) 128 Kb 32 page __get_free_page( ) 2048 Kb 512 page vmalloc unlimited unlimited 메모리 관련 설정 확인 [root@devlinux iptv] # ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited max nice (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 8192 max locked memory (kbytes, -l) 32 max memory size (kbytes,..
Kernel 2.6 에서 Floating 연산을 포함하는 모듈을 insmod 시, 아래와 같은 undefined symbol 관련된 메시지가 출력된다. 커널 코드에선 Floating 연산을 안쓰던가.. 이놈들의 코드를 같이 빌드 하던가.. -_- *** Warning: "__moddi3" [drivers/dmc/dmc_module.ko] un defined ! *** Warning: "__adddf3" [drivers/dmc/dmc_module.ko] un defined ! *** Warning: "__divdf3" [drivers/dmc/dmc_module.ko] un defined ! *** Warning: "__muldf3" [drivers/dmc/dmc_module.ko] un defined !
kbuild system 남상규 이 문서는 리눅스 커널 2.6.x에 사용되는 kbuild System에 대해 설명 합니다. Linux Kernel소스의 Documents/kbuild/makefiles.txt 문서를 번역한 것에 지나지 않으며 번역이 매끄럽지 못하고 직역을 한 부분이 있으나 이해 바랍니다. 의역을 하려면 장황하게 설명을 하거나 해야 하는데 그런 편 보다는 차라리 원문을 읽어 보시는 것이 낫겠단 생각에서 그런 것입니다. 번역이 매끄럽지 못한 부분은 반드시 원문을 읽어 영어 단어의 뜻을 파악하시기 바랍니다. 원문 : http://wiki.kldp.org/wiki.php/DocbookSgml/KBUILD
printk( ) 로 출력하는 커널 메시지는 klogd --> syslogd를 통해 /var/log/messages에 기록되며, 사용되는 출력 레벨은 Console 출력이다. 이 메시지는 기본적으로 X-Window 같은 터미널에서 바로 확인할 수 없으므로, 아래와 같은 방법을 통해 확인해야 한다. messages 파일의 갱신을 지속적으로 확인 [-@localhost] # tail -f /var/log/messages 커널 메시지의 출력 레벨을 높이면 터미널에서도 확인 할 수 있다. linux/kernel.h #define KERN_EMERG "" /* system is unusable */ #define KERN_ALERT "" /* action must be taken immediately */ #de..