| 1423 | } |
| 1424 | |
| 1425 | void cbm_subprocess_destroy(cbm_subprocess_t *process) { |
| 1426 | if (!process || atomic_load_explicit(&process->lifecycle, memory_order_acquire) != |
| 1427 | CBM_SUBPROCESS_TERMINAL) { |
| 1428 | return; |
| 1429 | } |
| 1430 | #ifdef _WIN32 |
| 1431 | CloseHandle(process->process); |
| 1432 | CloseHandle(process->job); |
| 1433 | #endif |
| 1434 | cbm_subprocess_free_config(process); |
| 1435 | } |
| 1436 | |
| 1437 | int cbm_subprocess_run(const cbm_proc_opts_t *opts, cbm_proc_result_t *out) { |
| 1438 | cbm_proc_result_t local; |
no test coverage detected