2017-11-16 9 views
0

簡単にPythonでループのために無限を終了する方法はCtrl-Cを使用している、などの「不可知論」:しかしブレークループ、OS

try: 
    while True: 
     print '-', 
except KeyboardInterrupt: 
    print 'done' 

、私がしたいです他の同僚のマシンでgui環境(pycharmなど)によってコピーとして解釈される可能性があるため、Ctrl-Cキー以外のものを使用してください。これを行う方法はありますか? WindowsとLinuxの両方で動作するソリューションが必要です。

+0

CTRL + Cは、テキストを選択した場合のみコピーされます。そうでない場合は、意図したとおりに動作します。 –

+0

上記の例のPyCharmではなく...私のテスト(win7、python2、PyCharm 2017.1コミュニティ版)では、出力がある間にデバッグコンソールでctrl-cを押すと、現在印刷中のものを選択してコピーしますそれは...そのバグや機能が、他の機会には、私はこれが良いことを発見したかもしれないかどうかは確信していません.... – ntg

答えて

0

Linuxの場合Ctrl + C Linuxの場合、Pythonプロセスにkillシグナルが送信されます。私は、Pythonスクリプトがオペレーティングシステムのデフォルトの動作を上書きできるとは思わない。

+0

さて、ここではPythonから離れます。しかし、Ctrl + CはSIGINTを送信すると思います。これはSIGKILLのように動作します(OSコードでSIGKILL == 9なのでkill -9を使ってSIGKILLを送ることができます) – ntg

+0

SIGKILLとSIGINの段落を確認してください:https://en.wikipedia.org/wiki/Signal_(IPC)Ctr-Cは基本的にマスクされています(つまり、デフォルトのOS動作) – ntg