2012-01-10 3 views
2

に私はgccで自分のコードをコンパイルC. にシステムを追加できません( "exit")。 C

system("exit"); 

で私のプログラムを終了し、端子を介してそれを実行したいと思います。しかし、どういうわけか、プログラムは終了するためにシステムへの呼び出しを実行しませんでした。なぜそれが起こったのですか?私はsystem("clear")をした場合、それがスムーズに

+0

を使用して見つけることができ、あなたのコード行を貼り付けることができますか? – iyasar

+0

@ YasarIslam私は申し訳ありませんが、私はちょうどこのスニペットが欲しいので、非常に長いです:) – giripp

+0

C11は 'gets'を削除したのと同時に' system'を本当に削除しなければなりません。安全に使用することは、まったく役に立たず、ほとんど不可能です。 –

答えて

10

存在しない、system()はシェルを起動し、コマンドを実行します。 exitはシェルを終了します。期待される結果は何も起こらないことでしょう。あなたはどのような結果を得ましたか?私はあなたが何をしたいと思います

は次のとおりです。

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

私のプログラムは動作し続けますが、whileループでこれを使用します。実際に私はある種のdbmsモックアップを作っていました。私は「さようなら」と言いますが、システムを終了する必要があります。 私はあなたのコードを使用しても機能しましたが、端末を閉じることはできませんでした。 – giripp

+0

'exec'で呼び出さない限り、呼び出されたプログラムから端末を閉じることはできません。端末を閉じます。 – sverre

7

を働くのであなただけ行う必要があります。一番上にも

exit(0); 

は、置く:

#include <stdlib.h> 
0

なぜsystem("exit")を使うのか?ただexit(int code);

system("exit")を使用すると、Cで

+2

システム( "exit");何かをするでしょう。 – Alex

+0

@Alex実際には私はそれが何をしているのかまだ不思議です:) – giripp

+0

それは何かをするでしょう、それは目に見えません。 – Alnitak

1

出口は、Cライブラリの呼び出しだ、シェルコマンドの呼び出しではありません。だから、シェルは終了しますが、プログラムは終了しません。試してください:

exit(0); 

必要なエラーコードで終了してください。 system機能は、単にコマンドインタプリタに引数を渡すので、

3

system("exit")これは、あなたが単に新しいシェルを作成し、すぐに終了し、それを言っている意味(私はほとんどのシステムでshと思う?)、何を達成することはありません。

EDIT:あなたのプログラムを終了させることを意図している場合は、stdlib.hヘッダーにあるexit関数を使用してください。

0

プログラムを終了するには、exit()コールが必要です。 exit()関数は、通常のプロセス終了を引き起こします。 exit()の引数としてEXIT_SUCCESSまたはEXIT_FAILUREを使用すると、0を使用し、1やなどの非ゼロの値を使用するよりも移植性が向上します。 exit()関数を使用するには、#include <stdlib.h>が必要です。 exit()

詳しい情報はman 3 exit

関連する問題