プログラム実行中に強制停止させる方法

このQ&Aのポイント
  • getsメソッドを使用してループからの抜け出しを試みますが、うまくいかず無限ループに陥ってしまいます。プログラム実行中に強制的に停止させる方法はありますか?
  • 現在、getsメソッドを使ってループから抜け出す方法を模索していますが、思うように動作しません。プログラムを強制的に停止させる方法があれば教えてください。
  • Rubyのプログラムでgetsメソッドを用いてループから抜け出そうと試みていますが、想定通りに動作しません。プログラムを強制的に停止させる方法を教えていただけないでしょうか?
回答を見る
  • ベストアンサー

プログラム実行中に強制停止させる方法

再び失礼します。 現在以下のようなソースコードを実行しています。 while true do print "commando?\n" command = gets if command == "end" then break end end ループから抜け出すために、getsメソッドを用いて、 endと入力されればループを抜けるという感じにしたいのですが うまく抜け出せず、無限ループに陥ってしまいます。 質問内容は、このように、getsメソッド実行中(?)にプログラムの強制停止を したいのですが、そのような方法はありますでしょうか。(例えばctrl+???とか) 実行環境は、terapadを使用してソースコードを書き、rubyコマンドプロンプトで rubyコマンドを使って実行しています。 それではよろしくお願いいします。 ※投稿確認したのですが、ソースコードにうまくインテンドが挿入されていません・・ 見づらくて申し訳ございません

  • kusut
  • お礼率55% (5/9)
  • Ruby
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • bikki6944
  • ベストアンサー率20% (2/10)
回答No.4

OSやハードウェアにもよりますが。よくつかわれるのは、Ctrl-c、Ctrl-B、Ctrl-Break ,Ctrl-Alt-Del、Esc ,Ctrl-Esc などですが、本当はプログラムを修正して、on-Key A then end みたいなAのKeyがおされたら end するようなコマンドをプログラムの最初に宣言するようなことはできませんか?

kusut
質問者

お礼

>よくつかわれるのは、Ctrl-c、Ctrl-B、Ctrl-Break ,Ctrl-Alt-Del、Esc ,Ctrl-Esc 無事、ctrl+cで実行の停止ができました。 OSやハードウェアのことも考慮して他の提案もしてくださり、ありがとうございます。 >本当はプログラムを修正して、on-Key A then end みたいなAのKeyがおされたら end するようなコマンドをプログラムの最初に宣言するようなことはできませんか? わかりました。確かに、それはやるべきですね。 プログラムを修正したいと思います。 ご丁寧にいろんなことを配慮してくださり、助かりました。 また何かあったときに、助けてくださると、うれしい限りです。 回答ありがとうございました。

その他の回答 (3)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

実行環境及びrubyバージョンが提示されてないので、 windows ruby1.9として回答します。 if command == "end" then を if command == "end\n" then としてください。 (getsで取得したcommandには改行コードもついてきます) 尚、プログラムが終了しない場合ですが、 タスクマネージャーを起動して、ruby.exeのプロセスを終了してください。 この方法が、わからない場合は、再度補足してください。 その場合、実行環境(windowsの場合はwindows-xp,windows7等) rubyのバージョンも提示してください。

kusut
質問者

お礼

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

回答No.2

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

kusut
質問者

お礼

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

  • f797966
  • ベストアンサー率50% (2/4)
回答No.1

ctrl+c では駄目ですか

kusut
質問者

お礼

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

関連するQ&A

  • プログラムを実行すると、なぜかメモ帳が起動してしまうのですが・・・

    まったくの初心者です。 コンパイラまではうまくいっているのですが、そのあとプログラムを実行すると、メモ帳が起動してしまいます。(ファイルの指定は間違ってないです。)起動されたメモ帳には、ソースコードが書かれています。 コマンドプロンプトには、実行結果が表示されません。使っているエディタはTeraPadを使っています。 なぜ、メモ帳が起動して、実行結果が表示されないのかわかりません。 どなたか、わかる方がいましたらよろしくお願いします。

  • Rubyの実行方法について質問です。

    Rubyの実行方法について質問です。 現在windows上のコマンドプロンプトでRubyパスを 通して「ruby ファイル名」で実行する事が出来ますが、 「ファイル.rb」のrubyファイルをダブルクリックだけで 実行出来る方法があると聞いたので、 その方法をご教示願います。

  • JavaのメインでsetHeaderを使う方法

    setHeaderというメソッドの挙動を確認したいです。 サーブレットを用意するのは大変なので、mainメソッドのクラスでコマンドプロンプトで実行して手早く確認したいのですが、どのようにすれば良いでしょうか? 何をインポート文に入れるかや実際のソースコードの書き方をご教示ください。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • Ruby vim 実行の仕方

    Rubyをvimで書いたので、実行しようとしたのですが、実行できないです。何がダメなのでしょうか? 手順としては、 vimで puts("Hello World!")と書きました。 w hello_ruby.rbと書いて保存しました。 コマンドプロンプトを開いて、hello_ruby.rbと入れて、Enterを押したのですが、 ’hello_ruby.rb’は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出ます。 コマンドプロンプトで、ruby -v と入れると、Rubyのバージョンは出てきます。 何がいけないのでしょうか?修正の仕方を教えてください。 詳しい方いらっしゃいましたら、よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • VBAで外部プログラムを非表示で実行するには

    VBAとVBScriptを混同しているのかもしれませんがよく分からないので教えてください。 Excel2010のVBAから、外部プログラム(test.exe)をコマンドプロンプトを非表示の状態で実行して、外部プログラムの実行が終了するのを待ってから、次の処理をさせたいのですが、test1のプログラムでは(A)の部分でエラーになってしまいます。また、test2のプログラムでは正しく実行されるのですがコマンドプロンプトのウインドウを非表示にする方法がよく分かりません。 test1のプログラムでエラーをでなくする方法、または、test2のプログラムでコマンドプロンプトのウインドウを非表示にする方法がありましたら教えてください。 ------------------------------------------------------- Sub test1()  Dim ws As Object  Dim we As Object  Dim command As String  command = "C:\test.exe"  Set ws = CreateObject("WScript.Shell")  Set we = ws.Run("%ComSpec% /c " & command, 0, False) '<===(A)  Set we = Nothing  Set ws = Nothing End Sub ------------------------------------------------------- Sub test2()  Dim ws As Object  Dim we As Object  Dim command As String  command = "C:\test.exe"  Set ws = CreateObject("WScript.Shell")  Set we = ws.exec("%ComSpec% /c " & command)  Do Until we.Status   DoEvents  Loop  Set we = Nothing  Set ws = Nothing End Sub -------------------------------------------------------

  • 【Ruby初心者】簡単なプログラムが実行しない

    教材でRubyを勉強中なのですが、以下のプログラムが実行されず爆死しています。 --- puts("整数を入力してね") number = gets.to_i if number > 0 then puts("正の数です!”) end --- 文字コードは、UTF-8で指定、OSはMacです。CotEditorを使用しています。 数字/アルファベットだけのプログラムは正常に実行されるのですが、 文字入りのプログラムがうまく実行されません。 プレビュー見ると文字化けしているので(添付画像参照)、 文字入力にバグが起因していると思われますがお手上げ状態です。

    • ベストアンサー
    • Ruby
  • vbsでのコマンド実行について

    お世話になります。 現在、vbs内でRunメソッドとExecメソッドを使用してコマンドを実行しています。 一応、自分の求めている処理はできたんですが・・・ 戻り値を取得する為にExecメソッドでコマンドを実行する記述があるのですがコマンドプロンプトが表示してすぐに消えてとぱかぱかしてしまっています。 そこで皆さんに質問があり、投稿しました。 コマンドをExecメソッドで実行している所をRunメソッドで実行するように変更してみましたがうまくいきませんでした。 ※変更したのはコマンドの最後に「> 20161111.txt」を追加してテキストファイルに出力させるようにコマンドを変更しました。一応、コマンドプロンプトで直接、コマンドを実行したら問題なく戻り値が「20161111.txt」内に出力されるのを確認しました。 objShell.Run ”C:\ ~.exe ・・・ 20161111.txt”, 0, True 説明が下手でうまく伝える事ができたのかが心配ですがどうか私にご教授いただけませんでしょうか。 何卒、宜しくお願いします。

  • Rubyの実行のしかた

    Ruby(プログラミング)初心者です。 Rubyの実行の仕方について質問させて下さい。 コマンドプロンプト(マックなのでターミナルですが)で ruby Test.rb と打ち込んで実行しているのですが、これは普通なのでしょうか? 新しい言語で、しかもインタプリタ形式だからワンステップずつ実行できると聞いていたのですが、これだと何とも古くてコンパイルしたのと変わらない様な気がします。

  • VBプログラムから「管理者として実行」したい

    コマンドプロンプトで実行したいコマンドが 「route add ***.***.***.*** mask 255.255.255.255 ***.***.***.***」 (*は、任意のIP) だとします。 XPでは問題ないですが、Vista以降だと、管理者権限が必要なコマンドのため、 そもそもコマンドプロンプト自体を「管理者として実行」モードで起動する必要があります。 上記を、手作業で行う場合は、それで解決しますが、 同じ事を、VBのコードから実行したい場合、 System.Diagnostics.Process.Start を使い、(以下サンプルコード) --------------------------- Dim psi As New System.Diagnostics.ProcessStartInfo() psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec") psi.UseShellExecute = False psi.CreateNoWindow = True psi.Arguments = "/c route add ***.***.***.*** mask 255.255.255.255 ***.***.***.***" Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi) p.WaitForExit() ----------------------------------------------------------- とすると、XPでは、管理者権限を問われないので実行できますが、 Vista以降だと、コマンドが管理者権限で実行されていないためか実行が完了せず、コマンドの内容も行われていません。(route addコマンドの記述にミスは無いとします。) Vista以降の場合、手作業で、コマンドプロンプトを右クリックして「管理者として実行」を選んで起動し、コマンドを実行するのと同じ事を、 VBのコードから行うには、どうしたらいいのでしょうか? 分かる方、教えてください。お願いします。

  • Rubyでtwitterのbotを作りたい

    Rubyでtwitterのbotを作りたいです。 特定のキーワードをRTするようにしたいです。 初心者ですのでほとんどプログラミングできません。 アクセストークンは取得しました。 コマンドプロンプトで実行するのはわかります。 terapadにプログラミングするつもりですがどのようにプログラムすれば動くのでしょう。 ググってもいいサイトが見つかりません。 どうか教えてくださいませ。

    • ベストアンサー
    • Ruby

専門家に質問してみよう