You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中等待C程序执行完成后清理可执行文件

解决Bash脚本运行交互型C程序的问题

你的脚本核心问题是没运行编译好的可执行文件,而且PID获取逻辑完全错误。以下是修正后的可行方案:

修正后的脚本

#!/bin/bash

echo "C PROGRAM STARTED"

# 编译程序,若编译失败直接退出脚本
if ! make -f Makefile all; then
    echo "编译失败,退出脚本"
    exit 1
fi

# 运行生成的可执行文件(根据你的make输出,可执行文件名为ptf)
./ptf

# 程序运行结束后执行清理
echo "END OF PROGRAM"
make -f Makefile clean

关键说明

  • 编译完成后必须手动执行可执行文件./ptf,原脚本只完成了编译步骤,直接跳到了清理,所以没给用户输入交互的机会。
  • 前台运行./ptf时,脚本会自动阻塞等待程序结束——直到用户完成所有输入、程序输出结果并退出后,脚本才会继续执行后续的清理命令,完全不需要while循环或sleep。
  • 加入if ! make ...的判断是为了处理编译失败的情况,避免后续尝试运行不存在的可执行文件。

澄清之前的误解

  • 不需要while循环:前台运行程序时,脚本执行是串行的,进程结束前后续命令不会执行,无需额外循环判断。
  • 不需要sleep:脚本会自动等待交互型程序完成所有输入输出并退出,不用预估用户输入耗时。

内容的提问来源于stack exchange,提问作者Jeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:01:33