본문 바로가기

GCC3

[gcc]키보드 입력 여부 확인하기 리눅스 계열 프로그램을 만들때, gcc로 개발하다보면 키보드 입력을 받아야 하는 경우가 있다. (보통 키입력으로 메뉴 선택하는 경우가 더 많겠지만..) ​ 그런데 키 입력은 보통 getchar 나 scanf 를 사용하는데, 키보드가 눌러질때까지 대기를 해서 "프로그램 구동 중 키가 눌러지면 종료" 같은 프로세스를 짜기가 귀찮아진다. ​ 스레드를 쓴다던가 해서 해결할 방안은 있지만 간단하게(?) 구현된 예를 찾아서 공유 할 겸, 포스팅을 한다. How can I use input without waiting user to give something (using C) ? - CodeProject #include #include #include #include #include #include int kbhit.. 2023. 7. 24.
[libcurl] ftp 업로드 (put) 임베디드 리눅스 제품 군도 FTP서버에서 파일을 다운로드하거나 업로드 해야 하는 일이 있다. (아직도 프로그램 업데이트를 위해 랜포트 검사 겸 TFTP를 많이 사용한다) ​ 같은 네트워크는 아니고, 원격으로 파일을 주고 받기 위해 FTP를 사용해야 하는데 여기서 libcurl을 이용하는 것이 개발시간을 많이 단축할수있다. 또 HTTP 프로토콜도 간단하게 구현할수있어서 좋다.​ Curl을 개발PC에 설치한다. 설치방법은 링크를 참조한다. 우분투에서 cURL(libcurl) 설치 및 사용 :: 게으른 엔지니어 ​ 만약 임베디드 리눅스 이라면, 직접 소스를 다운받아서 빌드하거나 buildroot 작업시 기본 라이브러리에 포함하기를 추천한다. ​ 테스트할 소스코드는 libcurl - source code exa.. 2023. 7. 24.
동적 라이브러리 SO의 체크섬이 달라지는 이유 개발 환경을 테스트하는 도중, 오브젝트 파일은 똑같은데 왜 그걸 합친 SO 파일이 체크섬이 다른 케이스가 나타났다. 왜 다를까? ​ 이해가 되지 않는다. 그래서 각 다른 개발 환경에서 빌드 한 so를 헥사 에디터로 비교해 봤다. 헥사 에디터로는 내용 분석이 어려워서 readelf로 분석을 다시 하기로 했다. 첫 헤더는 정상이고, 아래로 내려보니 메모리맵에 로드되는 함수 순서가 서로 다른 것이 나타났다. 위치만 바뀌어서 메모리 주소도 변경되었지만 그 외 차이점은 보이지 않았다. 그럼 왜 메모리 로드되는 순서가 바뀌었을까? 설마 하고 빌드 되는 내역을 다시 조사했다. 빌드 하기 전에 이전 오브젝트 파일을 삭제를 하는데 여기서부터 차이점이 나타났다. 파일 순서가 바뀌었다. makefile 을 살펴보니 rm 을.. 2021. 12. 18.