2012-01-10 75 views
2

我想与无法添加系统(“退出”);用C

system("exit"); 

在C. 我编译我的代码用gcc退出我的程序,并通过终端运行它。但不知怎的,程序没有执行对系统的调用来退出。为什么会发生?因为如果我做了system("clear")它工作顺利

+0

你能粘贴您的代码行中找到? – iyasar 2012-01-10 17:15:30

+0

@YasarIslam对不起,我很抱歉,这很长,因为我只想要这个片段:) – giripp 2012-01-10 17:18:40

+0

C11应该在删除'gets'的同时删除'system'。这同样没用,几乎不可能安全使用。 – 2012-01-10 18:14:18

回答

10

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

我想你想要的是:

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

我的程序继续运行,我在while循环中使用它。其实我做了一些dbms样机,当我说“再见”系统必须退出,但是当我使用系统(“退出”)时,它只是继续运行。 无论如何,当我使用你的代码它的工作,但没有关闭终端:) – giripp 2012-01-10 17:33:05

+0

你不能关闭终端从你调用的程序,除非你用'exec'调用它,在这种情况下退出通常会关闭终端。 – sverre 2012-01-10 17:39:28

7

你应该只是做:

exit(0); 

而且在顶部放:

#include <stdlib.h> 
0

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

system("exit")不存在

+2

系统(“出口”);会做点什么。 – Alex 2012-01-10 17:21:18

+0

@Alex其实我仍然好奇它在做什么:) – giripp 2012-01-10 17:24:58

+0

它会做点什么,它只是不可见。 – Alnitak 2012-01-10 17:26:26

1

退出不是一个shell命令调用,这是一个C库调用。所以它会退出shell,但不是程序。请尝试:

exit(0); 

或退出时出现任何您想要的错误代码。

3

system("exit")不会完成任何事情,因为system功能只是手中的参数命令解释器(我认为sh大多数系统?),这意味着你只需要创建一个新的外壳,然后告诉它立即退出。

编辑:正如其他人所说,如果意图是要使您的程序终止,请使用stdlib.h头文件中的exit函数。

0

要退出程序,只需拨打exit()即可。 exit()函数会导致正常的进程终止。使用EXIT_SUCCESSEXIT_FAILURE作为exit()的参数比使用0和一些非零值如1-1稍微更便携(对于非Unix环境)。要使用exit()功能,您需要#include <stdlib.h>

exit()

更多信息可以使用man 3 exit