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 兼容