U2L프로젝트 NULL 이슈 유닉스로 개발된 C 소스를 리눅스에서 컴파일만 하고서 돌리면 잘 돌아갈까? 대부분 프로그램들은 잘 돌아가지만 몇몇 코드들은 손을 봐줘야 하는 것들이 있다. 리눅스에서는 sprintf 를 사용할 때도 유닉스와 다르게 동작해서 오류가 발생되는 경우가 있다. 유닉스에서는 멀쩡히 잘 돌아가던 프로그램을 리눅스에서 돌리면 오류가 발생되는 경우로서 sprintf()가 있다. memset(b, 0x00, sizeof(b)); sprintf(a, "name:%s" , b ); printf("%s\n", a ); 이런 소스의 경우 b 값이 NULL일 경우 유닉스에서는 아무 것도 찍히지 않는다. name: 이라고만 찍한다. 그러나 리눅스에서는 "(null)" 이라는 문자가 찍히게 되면서 name:(null) 이라고 찍힌다.. 더보기 U2L 프로젝트 fclose() 이슈 유닉스 프로그램을 리눅스로 변환할 때 발생되는 이슈들 1. 변수가 NULL 일 때 access 하면 코어덤프가 발생되다. 유닉스에서는 이렇게 민감하지 않아서 coredump 가 나지는 않았았으나 linux 에서는 변수가 NULL 일 때 참조를 하면 바로 coredump 가 발생된다. 예를 들어 유닉스에서는 fclose(fp); 후에 다시 fclose(fp); 를 호출해도 코어덤프 발생되지 않았으나 리눅스에서는 짤없이 죽는다. 그래서 wrapper 함수를 만들어야 한다. int fn_fclose(FILE *_fp) { if( _fp != NULL && _fp->_fileno >= 0 ) return fclose(_fp); return 0; } 여기서 file structure pointer 변수가 fclo.. 더보기 쉘에서 date 사용 기본 일자 포맷으로 출력할 때는 그냥 단순히> date -I 2020-02-22 date 명령어에서 포맷을 주려면 date뒤에 +로 시작한다. 포맷이 붙어 있을 경우 ' 로 감싸지 않아도 되지만 스페이스가 들어가면 ' 로 감싸줘야 한다.> date +'%F %T' 2020-02-22 13:23:53 $로 date 명령을 실행하여 변수처리를 할 수 있다.> echo $(date +%F_%T) 2020-02-22_13:24:23 > CUR_DATE=$(date +%F_%T) > echo $CUR_DATE 2020-03-21_13:34:23 동일한 효과를 얻을 수 있는 ` 문자로 date 명령을 실행할 수 있다.> CUR_DATE=`date +%F_%T > echo $CUR_DATE 2020-03-21_13:.. 더보기 이전 1 2 3 4 5 6 7 8 ··· 246 다음