プロが教える店舗&オフィスのセキュリティ対策術

再び失礼します。
現在以下のようなソースコードを実行しています。

while true do
print "commando?\n"
command = gets
if command == "end" then
break
end
end

ループから抜け出すために、getsメソッドを用いて、
endと入力されればループを抜けるという感じにしたいのですが
うまく抜け出せず、無限ループに陥ってしまいます。

質問内容は、このように、getsメソッド実行中(?)にプログラムの強制停止を
したいのですが、そのような方法はありますでしょうか。(例えばctrl+???とか)
実行環境は、terapadを使用してソースコードを書き、rubyコマンドプロンプトで
rubyコマンドを使って実行しています。

それではよろしくお願いいします。

※投稿確認したのですが、ソースコードにうまくインテンドが挿入されていません・・
見づらくて申し訳ございません

A 回答 (4件)

OSやハードウェアにもよりますが。

よくつかわれるのは、Ctrl-c、Ctrl-B、Ctrl-Break ,Ctrl-Alt-Del、Esc ,Ctrl-Esc などですが、本当はプログラムを修正して、on-Key A then end みたいなAのKeyがおされたら end するようなコマンドをプログラムの最初に宣言するようなことはできませんか?
    • good
    • 4
この回答へのお礼

>よくつかわれるのは、Ctrl-c、Ctrl-B、Ctrl-Break ,Ctrl-Alt-Del、Esc ,Ctrl-Esc
無事、ctrl+cで実行の停止ができました。
OSやハードウェアのことも考慮して他の提案もしてくださり、ありがとうございます。

>本当はプログラムを修正して、on-Key A then end みたいなAのKeyがおされたら end するようなコマンドをプログラムの最初に宣言するようなことはできませんか?

わかりました。確かに、それはやるべきですね。
プログラムを修正したいと思います。

ご丁寧にいろんなことを配慮してくださり、助かりました。
また何かあったときに、助けてくださると、うれしい限りです。

回答ありがとうございました。

お礼日時:2013/07/06 12:30

実行環境及びrubyバージョンが提示されてないので、


windows ruby1.9として回答します。

if command == "end" then

if command == "end\n" then
としてください。
(getsで取得したcommandには改行コードもついてきます)

尚、プログラムが終了しない場合ですが、
タスクマネージャーを起動して、ruby.exeのプロセスを終了してください。
この方法が、わからない場合は、再度補足してください。
その場合、実行環境(windowsの場合はwindows-xp,windows7等)
rubyのバージョンも提示してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>if command == "end\n" thenとしてください。
無事、自分がやりたかったことができました。
とても助かりました。ありがとうございます。

>実行環境(windowsの場合はwindows-xp,windows7等)
申し訳ございません。
実行環境はwindows7,rubyのバージョンは2.0です。
また、質問にも不備がございました。
今回質問したかったことは、フリーズに陥ったから終了したいというよりも、
rubyコマンドプロンプトを一度終了させてもう一回起動すると、
またカレンドディレクトリを設定しないといけないのが若干めんどくさかったので、
回答にありました「ctrl+c」のような、実行中のものを中断する方法が知りたかったので
質問させていただきました。

しかし、ソースコードの指摘をしてくださり、本当にありがとうございました。
悩んでいたことなので、助かりました。

お礼日時:2013/07/06 12:24

強制停止は一般的にはOS或いはハードウエアの世界ですからこの辺の情報が無いと答は得られませんね。



一番確実なのは電源断です。
    • good
    • 0
この回答へのお礼

質問に不備があり、申し訳ございません。
実行時、OSはwindows7で、rubyのバージョンは2.0です。
次回質問する際には、このこともきちんと記載しようと思います。

回答ありがとうございました。

お礼日時:2013/07/06 12:26

ctrl+c では駄目ですか

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Ctrl+Cで無事実行の停止ができました!
ありがとうございました。

お礼日時:2013/07/06 12:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています