【问题标题】:Can't add system("exit"); in C无法添加系统(“退出”);在 C 中
【发布时间】:2012-01-10 17:13:31
【问题描述】:

我想退出我的程序

system("exit");

在 C 中。 我用 gcc 编译了我的代码并通过终端运行它。但不知何故,程序没有执行对系统的调用以退出。为什么会这样?因为如果我做了system("clear"),它就会顺利运行

【问题讨论】:

  • 你能粘贴你的代码行吗?
  • @YasarIslam 很抱歉我不能,它很长,因为我只想要这个 sn-ps :)
  • C11 确实应该在删除system 的同时删除gets。它同样没用,几乎不可能安全使用。

标签: c system exit


【解决方案1】:

在 C 中,system() 启动一个 shell 并执行命令。 exit 退出外壳。预期的结果是什么都没有发生,你得到了什么结果?

我想你想要的是:

#include <stdlib.h>
exit(EXIT_SUCCESS);

【讨论】:

  • 我的程序继续运行,我在 while 循环中使用它。实际上,我做了某种 dbms 模型,当我说“再见”时,系统必须退出,但当我使用 system(“exit”) 时,它只会继续运行。无论如何,当我使用你的代码时它工作了,但没有关闭终端:)
  • 你不能从你调用的程序中关闭终端,除非你用exec调用它,在这种情况下正常退出会关闭终端。
【解决方案2】:

你应该这样做:

exit(0);

同样在顶部,放:

#include <stdlib.h>

【讨论】:

    【解决方案3】:

    system("exit") 不会完成任何事情,因为 system 函数只是将参数传递给命令解释器(我认为在大多数系统上是 sh?)这意味着您只是在创建一个新的 shell 然后告诉它立即退出。

    编辑:正如其他人所说,如果打算终止您的程序,请使用 stdlib.h 标头中的 exit 函数。

    【讨论】:

      【解决方案4】:

      Exit 不是 shell 命令调用,而是 c 库调用。所以它会退出shell,但不会退出程序。试试:

      exit(0);
      

      或者退出任何你想要的错误代码。

      【讨论】:

        【解决方案5】:

        为什么使用system("exit")?只需使用exit(int code);

        system("exit") 不存在

        【讨论】:

        • 系统(“退出”);会做点什么。
        • @Alex 其实我还是很好奇它的作用:)
        • 它会做一些事情,只是不可见。
        • 它会做一些事情多么棒的答案!与其投反对票,不如至少给出一个链接到它说 system("exit") 做某事的地方,因为我找不到它
        • 它为什么不做点什么? system 将产生一个命令解释器,它将解释命令“exit”并立即退出。
        【解决方案6】:

        要退出你的程序,你只需要一个exit() 调用。 exit() 函数导致正常的进程终止。使用EXIT_SUCCESSEXIT_FAILURE 作为exit() 的参数比使用0 和一些非零值(如1-1)更便于移植(对于非Unix 环境)。要使用exit()功能,您需要#include &lt;stdlib.h&gt;

        更多关于exit()的信息可以通过man 3 exit找到

        【讨论】:

          猜你喜欢
          • 2018-11-28
          • 2020-06-03
          • 2020-02-01
          • 1970-01-01
          • 2011-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-13
          相关资源
          最近更新 更多