Study: ComputerScience(CS)
[OS] 쉘(Shell) 기본 문법: bash shell
💡 본 문서는 '쉘(Shell) 기본 문법: bash shell'에 대해 정리해놓은 글입니다. 쉴 스크립트 작성시 필요한 shell 기본 문법 및 쉴 설정 팁까지 정리하였으니 참고하시기 바랍니다. 1. 쉘(Shell) 기본 문법: bash shell Shell은 인터렉티브하게 대화식으로 CMD에서 명령어를 입력하여 사용하기도 하지만, 프로그래밍하여 *.sh 실행파일을 생성하여 논 인터렉티브하게 사용하기도 합니다. 1. 최상단에 #!/bin/bash 추가 - sh파일을 작성할때는 반드시 최상단에 #!/bin/bash 기록해줘야 해당 Shell을 통해 실행한다. 2. Shell 파일 실행 방법 ( ./ ) - sh / source / . 등을 이용해서 실행하면 권한이 없어도 수행이 가능하지만, ./ 로는 권..
[Network] C/C++에서 프로세스 간 통신
💡 본 문서는 'C/C++에서 프로세스 간 통신'에 대해 정리해놓은 글입니다. 프로세스 간 통신은 ip로 통신하는 것보다 빠른 일련의 과정을 통해 메모리를 주고 받고 있습니다. 이 방법 중 일부에 대해 정리하였으니 참고하시기 바랍니다. 1. 소개 많은 사람들이 무거운 작업을 분리하고 추가 최적화, 많은 독립성을 제공할 수 있기 때문에 프로그램을 위해 스레드보다 프로세스를 선택합니다. 예로 들어, Google 크롬 브라우저에서 각 탭을 실행하기 위해서 무거운 처리(예: 서버와의 통신, 네트워크 리소스 관리, 렌더링 등)을 해야하며, 각 탭은 매우 독립적으로 작동하기에 이는 프로세스를 사용하도록 작동합니다. 따라서 하나 프로세스 죽더라도 다른 프로세스에는 영향을 주지 않습니다. 또한 이 설계를 통해 비활성 ..
[Network] 프로세스 간 통신 방법: IPC(Inter Process Communication)
💡 본 문서는 '프로세스 간 통신 방법: IPC(Inter Process Communication)'에 대해 정리해놓은 글입니다. 프로세스들은 기본적으로 상호독립적입니다. 메모리를 공유하지 않기 때문에 각자 자신의 일만 하며 서로 간섭을 하지 않아요. 하지만 필요에 따라 프로세스간 정보를 교환해야하는 경우가 있겠죠? 이때 별도 수단을이용하여 프로세스 통신하는 방법론을 통칭하여 IPC(Inter Process Communication) 라고 합니다. 이러한 프로세스 간 통신(IPC)를 적용하기 위해 찾아보던 중 다양한 방법을 접하였고 이를 정리하였으니 참고하시기 바랍니다. 1. 프로세스간 통신(inter-process communication, ipc) 1.1 프로세스 간 통신이란? 프로세스 사이에 서로 ..
[Linux] gdb로 디버깅하는 방법(feat. run/attach executable)
💡 본 문서는 'gdb로 디버깅하는 방법'에 대해 정리해놓은 글입니다. 앞서 설명한 gdb에 대한 기본 설명을 읽고 오셨다면 gdb를 사용해야할 때에 대해서는 인지하셨을 거라 생각합니다. 이 문서 내에서는 활용하는 방법 중 먼저 run 방식과 attach 방식을 통해 gdb의 기능들을 살펴보고, 추후 load 방식에 대해 알아보겠습니다. 1. gdb를 익히기 위한 기본 세팅 1.1 C/C++ 파일 생성 매우 단순한 프로그램입니다. 2개의 입력인자를 받아 더하는 방식이네요. 이제 이 코드를 조금씩 분석해 나가며 기능들을 살펴보시죠. #include #include static int sum(int a, int b) { return a + b; } int main(int argc, char *argv[]) ..
[Linux] gdb 활용하는 다양한 방법: executable, process, core dump file
💡 본 문서는 'gdb 활용하는 다양한 방법'에 대해 정리해놓은 글입니다. C / C++ 코드를 디버깅 툴 중 가장 유명한 gdb와 이를 사용해야할 때에 대해 정리하였으니 참고하시기 바랍니다. 추가로 하기에 작성한 링크를 통해 이를 활용하여 executable, process, core dump file을 디버깅하여 분석하는 방법에 대한 글도 링크하였으니 참고하시기 바랍니다. 1. GDB란? 좋은 디버거는 문제를 해결하고, 프로그램을 좀 더 쉽게 개발하고 리버싱을 하는 등 다양한 방안에서 개발자에게 도움을 주는 도구 입니다. 많은 플랫폼에서 그에 맞춰 좋은 디버거들이 존재하고 개발자들은 자신에게 맞는 디버거를 사용하고 있습니다. 그 중 GDB(The GNU Debugger)는 많은 플랫폼, x86, x8..