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

如何在Bash中运行C编译程序test以触发指定main()代码逻辑

当然可以实现!

核心逻辑很简单:你的C程序里argc != 2的判断是在检查命令行参数的总数(argc包含程序本身的路径作为第一个参数)。当你只运行./test时,argc的值是1,所以会进入参数提示分支;只要给程序传递一个命令行参数,argc就会变成2,程序就会执行你想要的那三行逻辑。

具体操作步骤

在Bash里执行以下任意一种命令即可:

  • 传递一个当前存在的文件(比如你的源代码文件test.c):

    ./test test.c
    

    这时候程序会成功打开文件,执行第一次close输出closed,第二次close因为文件描述符已经失效,会触发perror输出错误信息,完全符合代码里的预期。

  • 或者传递当前目录(目录允许用O_RDONLY打开):

    ./test .
    

    效果和上面一致,同样会触发两次close的逻辑,第二次报错。

为什么这能生效?

当你在Bash中运行./test [参数]时,Shell会把程序路径和你提供的参数一起传递给C程序。此时argc的值会被设置为2(argv[0]是./test,argv[1]是你传入的参数),程序就会跳过参数错误的提示分支,执行kp_test_open、两次kp_test_close的代码逻辑。

如果想完整测试第二次close的错误场景,记得传递一个能被成功打开的路径(存在的文件或目录),这样第一次close会成功,第二次才会触发代码里注释的turi mesti close klaida(应该抛出close错误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:46:28