본문 바로가기
반응형

Linux7

Linux c socket 통신 테스트 (recv 할 데이터가 더 클 경우) Linux 에서 C 언어로 socket 통신하는 예제를 작성 해보았다.(OS : Rocky Linux 9.5)여기서 궁금했던 것은 recv 함수를 실행 시에 받을 데이터가 100 byte 이고, 실제로 받은 데이터가 50 byte 라고 하면 어떻게 될 지 궁금했다. 50 byte 를 받고 recv 로 대기를 할 지 아니면 50 byte 만 수행할 지 궁금했다.recv(클라이언트 소켓 fd, 받을 버퍼, 받을 사이즈, 옵션) 이니까받을 사이즈를 100으로 설정하였고,send(서버 소켓, 보낼 버퍼, 보낼 사이즈, 옵션) 에서 보낼 사이즈를 50 으로 설정한 코드이다.#include #include #include #include #include #include #include #include "../com.. 2025. 4. 14.
Rocky Linux 9.x에서 ttyd 설치 후 사용 방법 1. TTYD 설치ttyd 는 웹 기반 터미널 애뮬레이터라고 한다.WebSocket 프로토콜을 사용해서 브라우저와 Linux 터미널 간의 실시간 연결을 제공한다고 한다. 사용하는 이유는 docker 로 container 를 만들어서 사용할 경우에 직접 컨테이너 안을 들어가기가 어렵다.(openshift 나 기타 툴을 사용하면 모를까..) 그래서 컨테이너 안에서 잘 작동하고 있는지 터미널을 붙혀보기위해 오늘은 ttyd 를 사용하는 방법을 알아보려한다.나는 Rocky Linux 9.x 에서 작업한다.설치하는 방법은 아래 페이지에서 가져왔다. (CentOS)https://snapcraft.io/install/ttyd/centos나의 경우 Rocky  Linux 9.x 이기 때문에 yum 명령어 대신 dnf 명.. 2025. 4. 8.
gcc: multiple definition of bb.c:(.text+0x0): multiple definition of `test' /tmp/ccoyicve.o:aa.c:(.text+0x0): first defined here 첫번째 줄 해석 그대로 중복된 정의라는 얘기이다. 아래와 같이 해당 함수가 중복으로 선언이 되었다는 것을 알 수 있다. 두번째 줄의 경우 첫번째로 선언되어 있는 곳을 알려준다. 따라서 중복되는 함수를 유의 깊게 보면 된다. 위의 경우 test 라는 함수가 중복이 되었고, bb.c 파일과 aa.c 파일에 중복 선언이 되어있는 test 함수를 체크한다. 2023. 12. 4.
sqlite 실행 시 error (sqlite3 test.dbsqlite3: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by sqlite3)sqlite3: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by sqlite3)sqlite3: /lib64/libc.so.6: version `GLIBC_2.34' not fou.. sqlite 설치 환경 linux version : Rocky Linux release 8.7 (Green Obsidian) kernel version : 4.18.0-425.10.1.el8_7.x86_64 sqlite 를 처음 설치하고, 테스트하려고 테스트 명령어를 날려봤다. sqlite3 test.db sqlite3 test.db 라는 명령어를 처음 수행하였으나, error 가 발생하였다. $ sqlite3 test sqlite3: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by sqlite3) sqlite3: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by sqlite3) s.. 2023. 11. 16.
[c compile] directive writing byte into a region of size between warning 컴파일 시 warning 아래와 같은 warning 이 발생하였다. warning: ‘%s’ directive writing up to 255 bytes into a region of size between 192 and 255 [-Wformat-overflow=] 해당 warning은 버퍼오버 플로우를 방지하라는 warning 이다. 이유는 담을 변수의 사이즈가 더 작거나 같거나 할때 나타는 warning 이다. 예시로는 아래와 같은 상황이다. ex) char buf[5]; long a = 10000000; sprintf( buf, "%d", a ) 결국엔 buf의 사이즈보다 더 큰 상황이 올 것이고, 버퍼오버플로우가 날 것이다. 이 부분을 방지하는 것이다. 참고 : https://stackoverfl.. 2023. 7. 31.
[리눅스 시스템 프로그래밍] 스트림이란 (stream) 스트림 (stream) 직역하면 흐르다 인데, 원래는 물이 흐르는 시냇물을 의미한다. 컴퓨터에서는 데이터의 흐름으로 말한다. 즉, 데이터가 바이트이기에 바이트의 흐름이다. 흐르기 위해서는 통로가 필요하기때문에 통로라고도 부른다. 컴퓨터에서 스트림 : 데이터의 이동 통로 혹은 바이트의 흐름 linux 에서 스트림은 network 를 연결할 때, device 를 연결할 때 process 끼리 소통할 때 사용된다. linux 는 파일로 모든 것이 이루어져 있기 때문에 파일에 관한 시스템 콜인 open, close, read, write 가 stream 을 다루는 함수가 된다. open 함수는 fd 값을 반환시키는데, fd가 바로 스트림이 된다. (fd 가 파일을 연결시켜주는 통로가 되기 때문에) int ope.. 2023. 7. 30.