리눅스데브코스 [6주차 - 5]<프로세스 관련 시스템 콜 실습>

심우열·2023년 5월 16일
0

1. 프로세스 관련 시스템 콜

1. mem_segments.c

1. launch.json

{
        "name": "mem_segments",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/proc/mem_segments",
        "args": [
        ],
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
      }

2. 분석

2. multi_wait.c

1. launch.json

{
        "name": "mem_segments",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/proc/mem_segment",
        "args": [
        ],
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
      }

2. 분석

3. t_fork.c

1. launch.json

{
        "name": "mem_segments",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/proc/mem_segment",
        "args": [
        ],
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
      }

2. 분석

4. t_execve.c

1. launch.json

{
        "name": "mem_segments",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/proc/mem_segment",
        "args": [
        ],
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
      }

2. 분석

2. Toy project(fork, exec)

1. git

우분투에서 Git, GitHub 사용하기
우분투 & Github SSH연결

2. filebrowser

1. 설치

curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash

2. 실행

filebrowser -r [파일을 보여줄 디렉토리]

3. google chrome 설치

  • 나의 경우엔 arm64 버전의 리눅스를 사용중
  • 이경우 chrome이 지원되지 않아 chromium-browser를 사용
sudo apt install chromium-browser

4. make 이후 실행

1. Missing X server or $DISPLAY 오류 발생

2. 디스플레이 서버인 Xvfb 설치, 실행

sudo apt-get install xvfb
Xvfb -ac :99 -screen 0 1920x1080x16 &

3. 동일 오류

내가 arm64 리눅스를 써서 그런지 뭔지 모를 오류가 너무 많다
-> x86 pc를 한대 사야되나 ..

4. GitHub

https://github.com/w10sim/FIleServer_Linux_SystemProgramming

5. amd64 Linux로 실습 재진행

1. 현재 git log

commit 669973a45ab4c1d2fc11c82c1151d28eb46bf9b1 (HEAD -> master, origin/master, origin/HEAD)
Author: w10sim <w10sim@naver.com>
Date:   Thu May 18 17:24:58 2023 +0900

    V5.1(error fix)

commit 79c1d8da729d38cef6a35bebb39665687eb755c2
Author: w10sim <w10sim@naver.com>
Date:   Tue May 16 13:49:53 2023 +0000

    V.5(addfunction opening fileserver with google chrome using fork() exec() systemcall)

commit 3d29c783042ecec7e6855a1716e352092d7cd71c
Author: w10sim <w10sim@naver.com>
Date:   Tue May 16 12:39:42 2023 +0000

    V4.2(make folder clean)

V6 부터 다시 시작

2. fork, exec 기능 추가하기

profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글