C API 레퍼런스
streamzet_product.h의 공개 계약입니다. 이 API는 실행 엔진의 생명주기를 제어합니다.
stz_product_config
| 필드 | 형식과 요구 사항 |
|---|---|
| engine_path | const char* · 실행 엔진의 절대 경로 |
| registration_file | const char* · 등록 키 파일의 절대 경로. 소유 사용자만 읽기/쓰기(0600). |
| ca_file | const char* · CA PEM 파일의 절대 경로 |
| state_directory | const char* · 기기별 영구 디렉터리(0700)의 절대 경로 |
| device_name | const char* · 비어 있지 않은 UTF-8 이름, 최대 128바이트 |
경로는 1,024바이트 미만이어야 합니다. 포인터는 start 호출이 끝날 때까지 유효해야 합니다. 준비 도구는 장비 이름의 제어문자를 거부합니다. stz_product 핸들은 {0}으로 초기화하고 복사하여 공유하지 마세요.
stz_product_start
c
int stz_product_start(stz_product *product,
const stz_product_config *config);| 반환값 | 의미 |
|---|---|
| 0 | 자식 생성 성공. 등록과 네트워크 연결은 이후 비동기 실행. |
| EINVAL | 잘못된 인자·상대 경로·경로 길이·장비 이름 |
| EALREADY | 해당 핸들에 실행 중인 자식이 있음 |
| ECHILD | 기존 자식 상태를 확인/회수할 수 없음 |
| ENOENT / EACCES / other errno | posix_spawn 또는 설정 단계 오류. 반환값을 errno 코드로 해석. |
파일 내용과 네트워크 설정 오류는 생성 이후 엔진 종료로 나타날 수 있습니다. start의 성공 뒤에도 poll을 지속해야 합니다.
stz_product_poll
c
int stz_product_poll(stz_product *product, int *wait_status);| 반환값 | 의미 |
|---|---|
| 1 | 자식이 계속 실행 중. 블로킹하지 않음. |
| 0 | 이미 정지했거나 종료를 회수함. 핸들의 PID를 0으로 초기화. |
| -1 | NULL 핸들 또는 waitpid 오류 |
wait_status는 NULL이어도 됩니다. 이번 호출이 자식을 회수했다면 sys/wait.h의 WIFEXITED/WEXITSTATUS 또는 WIFSIGNALED/WTERMSIG로 상태를 해석하세요. 이미 정지한 핸들에서는 새 종료 상태가 기록되지 않습니다.
stz_product_stop
c
int stz_product_stop(stz_product *product);실행 중이면 SIGTERM을 요청합니다. 성공 또는 이미 정지한 경우 0, 잘못된 핸들은 EINVAL, 자식 상태 오류는 ECHILD, 신호 전달 오류는 errno 값을 반환합니다. 종료 완료를 기다리는 함수가 아니므로 poll로 자식을 회수하세요.
스레드 및 상태 소유권
같은 핸들의 모든 호출은 한 스레드 또는 외부 잠금으로 직렬화하세요. 어댑터는 키 값이 아닌 파일 경로를 자식에게 전달하며, 별도의 셸을 통해 인자를 평가하지 않습니다. 동일 state 디렉터리는 엔진의 파일 잠금으로 동시 사용을 거부합니다.