분류 전체보기 (728) 썸네일형 리스트형 [C++] 리눅스 System V 공유메모리 [1. 개요]리눅스 공유메모리의 한 종류인 System V 공유메모리의 간단한 사용 방법 및유의 사항을 정리하도록 한다.[2. 생성]#include #include #include #include int main(){ const int id = shmget(0x12345678, 4096, IPC_CREAT | IPC_EXCL | 0666); // 할당할 메모리 공간의 크기 // 생성, 이미 존재하면 실패, 접근 권한 if (id == -1) { perror("shmget fail"); return 1; } // 공유메모리 세그먼트에 attach voi.. Segmentation fault 사례1 [1. 개요]C++ 코드 작성 시, 발생한 segmentation fault 사례 및 해결 방안 정리[2. 예제]#include #include #include #include struct MyStruct { long long a; int b; char c[32]; std::string d;};std::deque dq;void GetAndErase(MyStruct& ref){ if (dq.size() > 0) { ref = dq.back(); // seg fault 가 발생하는 순간. dq.pop_back(); }}int main(){ { MyStruct item; strcpy(item.c, "Hello_World").. git 명령어 정리 [1. git mv]git 으로 추적 하는 파일에 대해서, 해당 파일 이름을 변경 할 경우 유용하게 사용 할 수 있다.어떤 파일의 이름을 mv 명령어를 이용하여 A -> B 로 수정하면, A 라는 파일을 삭제하는 것으로 처리됨.특히, B 라는 untrack 된 파일을 다시 commit 해야하는 과정을 추가로 처리해야함.그러나, git mv A B 로 하면, A 에서 B 로 이름이 변경된 것으로 처리하게 된다.[2. git reset]git add 로 stage 에 올라간 파일을 stage 에서 내릴 때에 사용 할 수 있다.git reset HEAD "your_file_name"[3. git restore]특정 파일의 변경 사항을 폐기 할 수 있다.git restore "your_file_name" Socket, 멀티 캐스트 & 브로드 캐스트 [1. 개요]멀티 캐스트(Multicast) 통신에서 데이터 전송은 특정 그룹에 등록되어 있는 다수의 호스트를 대상으로 한다.즉, 한번에 전송으로 다수의 호스트가 이를 수신 할 수 있다는 것이다. 이러한 멀티 캐스트 통신은 UDP 를 기반으로 하며, 라우터의 도움이 필요하다.라우터가 패킷을 복사하여 다수의 호스트에 이를 전달.라우터가 멀티 캐스트를 지원하지 않을 수 도 있다.특정 그룹은 클래스 D 에 속하는 IP 주소를 대상으로 한다.224.0.0.0 ~ 239.255.255.255브로드 캐스트(Broadcast) 통신 역시 UDP 를 기반으로하며, 멀티 캐스트와 유사하나, 전송 범위에서 그 차이가 있다.동일 네트워크에 속해있는 호스트로 그 대상이 제한된다.또한, 브로드 캐스트 통신이라 하더라도 IP 주.. Segmentation fault 해결 (C++) [1. 개요]C++ application 에서 발생한 Segmentation fault(Core dumped) 오류 해결 사례[2. 원인]재귀 함수의 recursion 이 깊어지는 경우 주로 발생했는데,아래 컴파일 경고가 발생한 함수에서 런타임 오류가 발생waring: control reaches end of non-void function [3. 해결]해당 함수의 리턴은 딱히 쓰는 데가 없어서 함수의 return type 을 void 로 바꿈.[4. 결론]함수의 리턴 값을 정확히 명시하지 않는 경우, 최악의 상황에서 app 이 crash 가 발생할 수 있다. 윈도우 컴파일 에러. [No Target Architecture] [1. 개요]윈도우 System api 를 사용해서, c++ application 소스 코드 작성 후, cmake 를 이용하여, 윈도우 visual studio 빌드 환경을 구축하였다. 컴파일을 진행 하니, Fatal error: "No Target Architecture" 가 발생하면서, 컴파일 실패함.[2. 해결 방법]여러가지 솔루션들이 있었으나, 나의 경우#include 를 다른 윈도우 api header 보다 먼저 include 하는 것 이었다.// Before#include #include #include /*****/ // After#include /*****/#include #include 그 외 부가적으로, CMAKE_GENERATOR_PLATFORM 를 x64 로 명시WIN32_L.. 소켓 Linger 옵션 [1. 개요]C++ 를 이용하여 서버 프로그램 작성 시, accept 된 소켓 (이하 클라이언트 소켓) 과 통신 시 발생한 문제서버: send() 후, 클라이언트 소켓에 대해서 close() 함클라이언트: 서버로 부터 응답을 받지 못하고, connection reset 이 발생서버: close() 전, shutdown() 을 이용해서 출력 스트림만 종료하여 출력 버퍼가 비워지도록 수정.클라이언트: 서버 응답 패킷 크기가 작은 경우는 응답을 받았지만, 패킷 크기가 큰 경우는 여전히 동일한 문제가 발생위와 같은 문제의 원인은, 클라이언트 소켓을 대상으로 close() 한 것이 문제인데,보통 file descriptor (text 파일 같은 것) 를 대상으로 close() 를 호출하면 출력 버퍼가 비워진다.. Zookeeper-client 라이브러리 빌드 [1. 개요]Zookeeper-client 관련하여, C++ 에서 사용하기 위한, 라이브러리 빌드 과정 기술.리눅스 기반.zookeeper-jute직렬화와 역직렬화(serialization/deserialization) 작업을 수행하는 라이브러리Zookeeper의 데이터 객체(예: DataNode, Request 등)들을 네트워크로 전송할 수 있는 형태로 변환하거나, 다시 원래 객체로 복원하는 작업을 한다.[2. Prerequisite]몇몇 바이너리 필요javamvncmakemvn 은 아래에서 원하는 버전으로 다운로드 혹은...https://maven.apache.org/download.cgihttps://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-ma.. [Queue] ITES [1. 문제설명] [2. 코드] [Stack] BRACKETS2 [1. 문제 설명] [2. 코드] 이전 1 2 3 4 5 6 ··· 73 다음