小蚂蚁t
2021-10-15 16:18
采纳率: 100%
浏览 32

C语言 关于return返回值 望指点一下

#include<stdio.h>
int main(){
  printf("hello word!");
  return 0;
}

我们知道 return 0; 是当主函数正常结束时,得到的函数值为0,当执行main函数过程中出现异常或错误时,函数值为一个非0的整数。这个函数值时返回给调用main函数的操作系统的。程序员可以利用操作指令检查mian函数的返回值,总而判断main函数是否已正常执行。
那我们应该怎么操作来检查main函数的返回值呢?(不看printf输出来判断)
如果时Linux下呢?
谢谢!

  • 好问题 提建议
  • 收藏

3条回答 默认 最新

  • include_iostream_ 2021-10-15 17:37
    已采纳

    为了防止题主被误导,提前说:直接用system函数的做法是错误的,其返回值通常不等于进程返回值
    如果你是在shell里,那好办了,执行完程序后执行echo $?就行,这个变量标识了你的程序有没有执行成功。(需要注意的是,Linux上为0表示成功。)这个特殊变量也可以像普通变量一样进行引用,但由于它是会变的,一般建议执行完进程后立刻用其他变量存储,总之不能多次复用,因为每次执行指令,这个变量都会被刷新。
    如果是在C里,那么得分系统。
    对Windows而言,不存在标准做法,但应该可以用CreateProcess系列函数启动进程,GetExitCodeProcess来查看。具体见MSDN:

    对Unix/Linux而言,有个比较标准的做法,和system函数的返回值有关。system的返回值分为多个部分,指示了进程是否正常退出、退出时的返回值、是否被信号中断、中断的信号是什么(这也是为什么我说用system函数的返回值直接作为进程返回值是错误的)。具体而言涉及WIFEXITED、WEXITSTATUS、WIFSIGNALED、WTERMSIG等几个宏,详见

    网上涉及system返回值的文章其实也不少,但上面这个链接是最权威的。

    此外,Python也可以做这个工作,具体涉及subprocess模块,这里就不赘述了。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 地球屋里老师 2021-10-15 16:24

    某些语言带有调用命令行的函数,一般是 system 函数, system("a.exe") ,检测该函数的返回值。

    评论
    解决 1 无用
    打赏 举报
  • churuxu 2021-10-15 16:25

    方法1(直接区分成功失败):
    通过 || && 符号, ||表示失败执行后面的命令, &&表示成功执行后面的命令
    Windows cmd 和Linux Shell都支持这种方式
    RunYouApp || echo error
    RunYouApp && echo ok

    方法2 (获取返回码):
    Windows cmd 用 %ERRORLEVEL% 变量
    Linux shell 用 $? 变量

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题