본문 바로가기

IT/Linux(Unix)

(4)
리눅스 프로그래밍 - 커널 소스 분석하기 ( ftp 서버 구현, 쓰래드 다루기 ) 0. 서론 쓰레드는 전역변수를 공유한다. 고로 전역변수가 있는 함수를 통해 버퍼링을 하면 안된다. -> 멀티 프로세스를 활용. 서버는 명령어를 분석해야 하기 때문에 readline을 사용-> \n 문자열을 받아야 하기 때문. (line 단위 read : readline) length 단위 read : readn ( 커널은 자신이 정해둔 기본 단위 만큼 전송하기 때문에(헤더에 있는 값이 기준인 것 처럼 보임-확인필요), 정확한 길이만큼 데이터를 받고 사용하려면 길이만큼 작동하는 함수 - readn, writen이 필요 ) 클라이언트는 데이터를 받아야 하기 때문에 readn을 사용 1. ftp server 구현 1. ls\n -> readline() 2. readn() [ftp_server] #include..
리눅스 프로그래밍 - 커널 소스 분석 ( 소켓, 서버 ) 1. socket int socket(int family, int type, int protocol); family : 인터넷 프로토콜 체계 명명 type : soket type protocol : TCP, UPD 이런 것 중 어느 것을 사용 할 지 socket 사용 코드 #include #include #include #include #include #include #include #include void err_quit ( char *msg) { printf ("socket error\n"); printf ("errno=%d, %s\n",errno, strerror(errno) ); perror (msg); exit (0); } int Socket(int domain, int type, int pro..
리눅스 프로그래밍 - 커널 소스 분석 ( 네트워크 기초 ) 오랜만에 초심으로 돌아가 리눅스 프로그램을 까보았습니다. 사실 선생님 한분이 도와주셨어요. 네트워크 전공 이신지 네트워크 위주로 시작했습니다. 1. 리눅스 커널 소스 가져오기 The Linux Kernel Archives kernel.org $ wget으로 웹에서 데이터 가져옴 2. 커널 소스 태깅하기 $ make tags 3. iphdr : ip 프로토콜 struct iphdr { __u8 ihl:4, // 길이 : 5*4 byte version:4; __u8 tos; // type of service - 현재 미사용 __be16 tot_len; // byte 단위, data length = tot_len -ihl*4 __be16 id; // 패킷을 나눴을 때 동일한 패킷임을 확인하는 Id __be16..
[VI] Xshell 에러 해결 모음집 ## Xshell에서 숫자 키패드가 안먹힐 경우 1. 터미널 등록정보 접근 2. 터미널 -> VT 모드 -> 초기 숫자 키패드 모드 -> 보통을 설정 3. 확인 4. 새로운 창 열어서 확인 하기 - 출처 : www.duri.net/board_it/18565 CIO의 IT이야기 - Xshell에서 숫자 키패드가 안 먹힐 때 요즘 리눅스 사용자들이 터미널 앱으로 무료인 Xshell 많이 사용하시지요. (저는 개인적으로 이게 가장 마음에 듭니다.) 그런데 putty에서도 그랬지만 vi 실행해서 문자를 입력하려고 하면 숫자 키 www.duri.net ## Xshell에서 한글이 깨질 때 1. 터미널 등록정보 접근 2. 터미널 -> 변환 : 인코딩 3. 저같은 경우는 기본값으로 바꾸니 해결 되었습니다. - 출처 ..