
図1 TerminalでCTRL+をダブルクリックしても応答はありませんが、CMatlabコマンドラインに2つの改行文字が表示されます。
キーバインディングに何か問題があると思います。私はWindowsとEmacsを試してみましたが、成功しませんでした。キーバインディングはMathematicaで動作します。 MathWorks for MatlabはDebian 8.xをサポートしているため、サポートする必要があります。
関連条件
- Matlabプロンプトに入力せずにCTRL+と入力します。C殺すしかし改行
- ...
差分ソリューション
- Matlabプロンプトを開き、を入力します
exit
。 - 開いているシステムモニタMatlabに終了および/または強制終了信号を送信します。
Matlab:2016a、2016bプレリリースハード
ウェア:Asus Zenbook UX303UA
OS:Debian 8.5
Linuxカーネル:4.6(バックポート)
関連:[ほとんどの場合、Matlabプロンプトに直接入力することに関連するものが見つかりませんでした。コンテキスト関連]
MathWorksサービスチケット:02154064
答え1
Ctrl+の基本的な意味は、CSIGINT信号を送信することです。 SIGINTの一般的な意味は、現在のフォアグラウンドで実行されているジョブを停止し、ユーザーが新しい入力を提供できるようにすることです。私はそれを使用しています仕事コンピュータが実行する操作の非公式の意味です。これは別のプロセスである必要はありません。 Matlabなどのプログラムは、連続したコマンドを読み取って処理します。REPL- SIGINTはプログラムを終了するのではなく、ユーザーをプログラムプロンプトに戻す必要があります。フォアグラウンド操作が操作を実行して終了するプログラムの場合、SIGINTはユーザーがシェルプロンプトに戻る方法なので、プログラムを終了する必要があります。
Ctrl+を試してください\。これはSIGQUIT信号を送信します。 SIGQUITの一般的な意味はすぐに終了し(システムがそれに対して設定されている場合)コアダンプ。すべてのプログラムがこの意味を維持するわけではなく、Matlabがこの意味を維持しているかどうかはわかりません。
シャットダウン信号キーが機能しない場合は、Ctrl+ ZSIGSTOP送信を試してください。これにより、プログラムは中断され、他の信号を送信できるシェルプロンプトに戻ります。タスクを一時停止すると、シェルに次のメッセージが表示されます。
[1]+ Stopped matlab
括弧内の数字は位置番号です。%1
プロセスIDの代わりにそのシェルからプロセスにシグナルを送信できます。たとえば、kill %1
ここではSIGTERM(正常終了信号)を送信します。それでも機能しない場合kill -KILL %1
(SIGKILL、終了信号を与えずに信号終了)、一度だけ適用してみてください。 。
その端末で実行されているシェルに到達するためにアプリケーションを中断できない場合は、他の端末で実行されている他のシェルでアプリケーションを終了してください。
答え2
MATLABは数学ではありません。むしろ、MATLABプログラマは、^C
起動中にSIGINT(s)をブロックするか、コマンドプロンプトモードで改行文字をエクスポートするカスタムハンドラをインストールすることにしました。これはシェル環境の一般的な動作です。
答え3
Ctrl-Cを入力してもシェルは消えません。現在のコマンドラインがキャンセルされ、シェルが終了してログアウトしたり、古いプログラムに戻る代わりに、新しいプロンプトが表示されます。
Bashのようなシステムコマンドシェルはソフトウェアです。他のプログラミング言語シェルも同じ技術を使用してプログラムできます。
一般的なプログラミング言語シェルは対話型編集モードにあり、TTYはネイティブモードにあり、Ctrl-Cは一般的な文字です。現在のコマンドライン操作のキャンセルは、Ctrl-Cキーにバインドされた特別な種類の編集コマンドとして実装できます。
また、一部のプログラミング言語シェルでは、コードの計算を中断することがあります。これは通常、コードの実行中にCtrl-Cを信号生成およびSIGINT
処理にマッピングする一般的な設定にTTYモードを復元することによって行われます。どういうわけか、処理は実行中のコードのキャンセルに変換されます。 Cで書かれたインタプリタは、インタラクティブなlongjmp
プロンプトによって設定された場所で実行できます。setjmp
信号SIGINT
ハンドラ自体は「割り込み発生」と呼ばれるグローバル変数を設定することもできます。インタプリタは、この変数をチェックして例外に変換することがあります。これにより、シグナルハンドラから逸脱する複雑さが追加されるのを防ぎます。