예제로 시작하기
SDK는 share/examples/에 단계별 예제를 제공합니다. 코드를 빌드하기 전에, 먼저 이 예제들로 PARA 런타임이 어떻게 동작하는지 체험해 볼 수 있습니다.
예제 구성
share/examples/
├─ examples-runner.sh # 예제 실행 진입점(런처)
├─ examples/
│ ├─ 01-hello-world.sh # 01. Hello World
│ ├─ 02-vehicle-mode.sh # 02. 차량 모드 전환
│ ├─ 03-sensor-pipeline.sh # 03. 센서 파이프라인
│ ├─ 04-remote-vehicle-control.sh # 04. 원격 차량 제어
│ ├─ 05-fault-tolerance.sh # 05. 결함 허용
│ ├─ 06-ipc-benchmark.sh # 06. IPC 벤치마크
│ ├─ en/ # 영문 버전 스크립트
│ └─ lib/runner-common.sh # 예제 공용 헬퍼
├─ Machine/ # 완전한 예제 Machine (빌드 가능한 앱 모음)
├─ para-playground/ # 자유 실험용 playground
└─ .tours/ # VS Code CodeTour 가이드(01~06)
각 예제 스크립트는 lib/runner-common.sh의 헬퍼를 사용해 단계(step)를 안내하고, para-tui(TUI)와 연동해 로그(DLT) 탭 전환 등을 보여 줍니다.
예제 01 — Hello World
가장 기본적인 시나리오는 EM(Execution Manager) 기동만으로 앱이 자동 시작되는 흐름입니다(examples/01-hello-world.sh).
스크립트가 설명하는 동작은 다음과 같습니다.
- EM이 시작되면 매니페스트 디렉토리를 스캔하여 의존성 그래프를 구성합니다.
- EM은
MachineFG(Machine Function Group)를Off→Startup상태로 자동 전환합니다. MachineFG:Startup에 의존(바인딩)하는 프로세스가 자동으로 fork됩니다.SM— State ManagerHelloWorld—"Hello, World!"를 매초 출력하는 예제 앱
HelloWorld는 DLT 로거로 메시지를 출력합니다(APIDHW__).- EM을 종료하면 의존 앱들이
SIGTERM을 받아 graceful 종료됩니다.HelloWorld의terminationHandler가 호출되어 메인 루프를 빠져나오고,"Goodbye, World!"를 남긴 뒤ara::core::Deinitialize()로 정리합니다.
핵심은 별도의 상태 전환 명령 없이 EM 기동만으로 앱이 시작된다는 점입니다. 어떤 앱이 언제 기동될지는 각 앱의 실행 매니페스트가 선언한
state-dependencies(예:MachineFG:Startup)로 결정됩니다.
예제 실행
예제는 런처(examples-runner.sh)를 통해 실행합니다(환경을 먼저 소싱하세요). 런처는 기본적으로 tmux 세션을 만들어 **왼쪽에 시나리오 러너, 오른쪽에 para-tui(로그/DLT 뷰)**를 동시에 띄웁니다.
# SDK 환경 구성 (PARA_SDK 등 설정)
cd /path/to/para-sdk
. ./para-env-setup.sh
# 사용 가능한 시나리오 목록
./share/examples/examples-runner.sh --list
# 시나리오 실행 (기본: tmux 분할 — para-tui + 러너)
./share/examples/examples-runner.sh 01-hello-world
# tmux 없이 러너만 실행
./share/examples/examples-runner.sh 01-hello-world --no-tui
예제 스크립트는 대화형(interactive)으로, 각 단계에서 Enter 입력을 기다리며 다음 동작을 안내합니다. 진행하면서 para-tui의 DLT 로그 탭에서 앱이 출력하는 로그(예: Hello, World! (0), (1), …)를 직접 확인할 수 있습니다.
기본 분할 모드는
tmux가 필요합니다.--no-tui로 러너만 실행할 수도 있습니다.para-tuipane 비율은PARA_TUI_SPLIT환경변수로 조정합니다.
다음 단계
예제 동작을 이해했다면, 직접 애플리케이션을 빌드해 봅니다 → CMake로 빌드하기