Files
tools/oci
Wang Defa 7d04ad7532 fix: 彻底修复 FIFO 清理问题(避免 trap 冲突)
## 问题根源

存在**两个 EXIT trap 冲突**:
1. `oci/create_instance.sh:364` - 清理 FIFO 的 trap
2. `common/remote_loader.sh:23` - 清理临时目录的 trap

在 Bash 中,每次设置新的 trap 会**覆盖**之前的 trap。
当 remote_loader.sh 加载时,它的 `trap cleanup_remote_libs EXIT`
会覆盖 main 函数中设置的 FIFO 清理 trap。

## 错误表现

```
/dev/fd/63: line 1: fifo: unbound variable
```

- FIFO 文件不会被清理(因为 trap 被覆盖)
- Process substitution 退出时产生 trap 交互错误

## 修复方案

**移除 trap,改用显式清理:**

```bash
# 旧方案(有问题)
trap "rm -f \"$fifo\"" EXIT
configure_network "$ocid" "$fifo" &
read subnet_id < "$fifo"

# 新方案(可靠)
configure_network "$ocid" "$fifo" &
local bg_pid=$!           # 保存后台进程 PID
read subnet_id < "$fifo"  # 读取结果
wait "$bg_pid"            # 等待后台进程完成
rm -f "$fifo"             # 手动清理 FIFO
```

## 优势

-  避免 trap 冲突
-  显式的清理流程,更易理解
-  确保后台任务完成后再清理
-  与 remote_loader.sh 的 trap 兼容
2025-12-26 15:14:07 +08:00
..