본문으로 건너뛰기
sstreamzet/docs
xSpan SDK 0.2.1콘솔 열기
개발자 문서 / xSpan SDK
R660 실기 검증 · 수정 2026-09-21

C API 레퍼런스

streamzet_product.h의 공개 계약입니다. 이 API는 실행 엔진의 생명주기를 제어합니다.

stz_product_config

필드형식과 요구 사항
engine_pathconst char* · 실행 엔진의 절대 경로
registration_fileconst char* · 등록 키 파일의 절대 경로. 소유 사용자만 읽기/쓰기(0600).
ca_fileconst char* · CA PEM 파일의 절대 경로
state_directoryconst char* · 기기별 영구 디렉터리(0700)의 절대 경로
device_nameconst 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 errnoposix_spawn 또는 설정 단계 오류. 반환값을 errno 코드로 해석.

파일 내용과 네트워크 설정 오류는 생성 이후 엔진 종료로 나타날 수 있습니다. start의 성공 뒤에도 poll을 지속해야 합니다.

stz_product_poll

c
int stz_product_poll(stz_product *product, int *wait_status);
반환값의미
1자식이 계속 실행 중. 블로킹하지 않음.
0이미 정지했거나 종료를 회수함. 핸들의 PID를 0으로 초기화.
-1NULL 핸들 또는 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 디렉터리는 엔진의 파일 잠금으로 동시 사용을 거부합니다.