반응형

컴퓨터활용/유닉스 64

strcpy 의 위험성

strcpy 를 사용할 때 그 변수의 사이즈에 대하여 정확히 인지를 하고 사용해야 한다. 자칫 잘못하면 엄한 메모리의 영역까지 엎어칠 수 있다. 다음의 예제는 a 라는 스트링 변수에 문자를 2 byte만 넣을 수 있는데 이것을 오버하여 무턱대고 strcpy 를 했을 때 그 뒤에 바로 따라오는 변수 b의 기존 값(12345)이 뭉개져 버리는 것을 보여주고 있다. #include #include #include typedef struct a { char a[3]; char b[10]; } a_t; main() { a_t a; strcpy( a.b, "12345" ); printf("b ptr=[%p] len=[%ld] size=[%ld] value=[%s]\n", a.b, strlen(a.b), sizeof..

전각 문자를 반각 문자로 변환하는 C 프로그램

반각(半角)문자와 전각(全角)문자, 라는 것은 원래 "인쇄용어"입니다. 전각문자는 "정사각형" 안에 들어가는 문자이고, 반각은 그 정사각형의 반쪽에 들어가는 문자입니다. 전각문자의 폭은, 반각문자의 2배입니다. 예를 들어 숫자 "3" 은, 한글 "가"의 절반의 폭만을 가지고 있습니다. 그래서 영문과 숫자 등은 반각이고, 한글이나 한자들은 전각문자입니다. 다만, 영문과 숫자를 전각으로 표현할 수도 있습니다. 컴퓨터에서, 반각문자는 1바이트, 전각문자는 2바이트로 표현됩니다. 숫자 "3"을 표현할 때는 1바이트로 충분하지만, 한글 낱자 "가"를 표현할 때는 2바이트가 필요합니다. 영문 알파벳은 반각이다. 컴퓨터를 처음 만든 놈들 입장에서 보면 알파벳이 정상이고 한글 같은 것들이 비정상으로 보이겠지만 우리는 ..

대소문자로 변환 쉘

쉘에서 입력된 아규먼트를 읽어서 대소문자로 변환하는 예제이다. 파일의 확장자를 제거하는 예제도 참고해 볼 만하다. ######################################################################### #!/bin/ksh ######################################################################### ##대문자 변환-----------------------------------------------------------# ######################################################################### Uppercase() { echo $* | tr "[a-z..

멀쩡한 쉘이 실행이 안 되고 파일이 없다고 메시지가 나온다면..

간혹 unix 의 vi 사용에 익숙하지 않은 분 중에 쉘을 간단하게 만들고 나서 실행을 시켰더니 실행이 안 된다고 하시는 분이 있습니다. [cbssvd01@e9812978:/users/e9812978/shl] [cbssvd01@e9812978:/users/e9812978/shl]ls -al 총계 20 -rwxr-xr-x 1 e9812978 cbsdev 189 6월 27일 15:23 bmlog drwxr-xr-x 4 e9812978 cbsdev 4096 6월 27일 15:23 .. drwxr-xr-x 2 e9812978 cbsdev 256 6월 27일 15:23 . [cbssvd01@e9812978:/users/e9812978/shl] [cbssvd01@e9812978:/users/e9812978/shl]..

C 로 구현한 right trim function

C의 제공 함수에서는 trim 하는 함수를 제공하지 않는다. 그 이유는 로직이 너무 간단하여 누구나 필요한 사람이 구현해서 사용하면 되기 때문에 굳이 제공하지 않는듯 하다. 그렇다면 strcpy나 strlen도 마찬가지로 간단한데 왜 제공되느냐고 묻는다면 할 말 없다. char * rtrim( char *str ) { long pos = strlen(str)-1; for (; pos>=0; pos-- ) { if(str[pos] == 0x20) str[pos] = 0x00; else return str; } return str; } 이것을 매크로로 만들어 보면 #define RTRIM(_str) do { \ long pos = strlen(_str)-1; \ \ for (; pos>=0; pos-- ) ..

gcc 이야기

gcc 이야기(1)원문 : http://kelp.or.kr/korweblog/stories.php?story=02/03/31/9629811시작하기에 앞서이곳 KELP에 이런 글을 올려도 되는지 의심스럽습니다. gcc를 비롯한 개발 툴은 embedded linux뿐만 아니라 일반적인 linux 시스템 및 상용 Unix 시스템에도 널리 사용되고 있습니다. 따라서 embedded linux 시스템을 주로 다루는 KELP에 이런 글을 올린다는 것은 조금은 어울리지 않습니다만, 다른 곳에 제가 쓰는 허술한 글을 올린다는 것이 허락되지 않기 때문에…(그렇다고 KELP를 폄하하는 것은 아닙니다.)원래는 제목을 “gcc 이야기”가 아닌 “개발툴 이야기”나 다른 것으로 정하려고 했습니다. gcc 한가지만 이야기 하고 싶..

truss를 이용한 input/output 내역 모니터링

truss 사용 예제 프로세스 id 4083828 에 대한 truss 사용 예제 이다. -w : 소켓으로 write 한 거 -r : 소켓에서 읽은 거 -o : 출력파일 지정 -p : truss 할 프로세스 번호 $ uname -a AIX dev04 3 5 000955634C00 --> aix version 5$ truss -w all -r all -o aa.txt -p 4083828 thread_tsleep(0, 0xF048F554, 0x00000000, 0x35EE8E38) = 4 = 0x00000000 thread_setmystate_fast(0x4000000C, 0x00000000, 0x00000000, 0x00000000, 0x40000000, 0x10540043, 0x10540043, 0x78E..

find 명령어 옵션

* / 는 최상위 디렉터리를 뜻함. 만약 찾고자 하는 디렉터리가 있다면 그걸로 대체 - 파일 이름에 foobar 가 들어간 파일 찾기 find / -name "foobar" -print - 특정 사용자(foobar) 소유의 파일을 찾기 find / -user foobar -print | more - 최근 하루동안에 변경된 파일을 찾기 find / -ctime -1 -a -type f | xargs ls -l | more - 오래된 파일(30일 이상 수정되지 않은 파일) 찾기 find / -mtime +30 -print | more - 최근 30일안에 접근하지 않은 파일과 디렉터리를 별도의 파일로 만들기 find / ! ( -atime -30 -a ( -type d -o -type f ) ) | xargs..

쉘에서 문자열 조작하기

★ 간단한 쉘 작성... 띄워 쓰기 주의... 쩝 ★ 12345678910111213141516171819202122232425262728#!/bin/bash # 배쉬 쉘# Description : Modify config file because line is changed # 입력 파라미터 갯수 체크 (1개만 가능)if [ $# -gt 1 ]then echo " *** Error> Wrong argument number" exit 1fi # 입력 파라미터 유효성 체크 ( 1 ~ 24 까지만 )if [ $1 -lt 0 -o $1 -gt 24 ]then echo " *** Error> Wrong argument (input between 1 and 24)" exit 1fi # 입력 파라미터의 길이가 1이라..

VI 에디터 120% 사용하기

VI 에디터 120% 사용하기 작성일: 1998년 4월 26일 작성자: 안창선(csan@coresw.co.kr, http://genesis.yonsei.ac.kr/~kabin) 참고서적: O'Reilly Learning the vi Editor Usenet net.unix O'Reilly Unix Power Tools 1. 한 파일의 일부분을 다른 파일로 복사하기 명령 설명 ---------------------------------------------------------------- "f4yy 현재라인부터 4라인을 'f'라는 이름의 버퍼에 복사한다. :w 편집중인 파일을 저장한다. :e newfile 새로운 파일을 로드한다. "fp 새로운 파일의 현재 라인위치에 'f'란는 이름으로 저장해 두었던 내..

반응형