今日、間違ってvi filename |のようなおかしなコマンドを実行してしまいました 。vi - . Ctrl-C が役に立たなくても、端末が動かなくなりました。ターミナルだけを閉じる必要がありました。私はそれを数回試し、友人のマシンでも試しました。なぜ Ctrl-C も役に立たなかったのか不思議です。
3 に答える
3
viはstdinから読み取っています。
vi で編集する場合、Ctrl+cも機能しません。
viを終了するには、 :qまたは:qを使用します。通常のviセッションと同じように機能します。
于 2012-07-12T08:57:40.403 に答える
1
C プログラムは、POSIX 関数 signal() を使用して、キーボード割り込みがあった場合に何をするかを選択できます。
以下に例を示します (このサイトからコピー):
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
FILE *temp_file;
void leave(int sig);
main() {
(void) signal(SIGINT, leave);
temp_file = fopen("tmp", "w");
for(;;) {
/*
* Do things....
*/
printf("Ready...\n");
(void)getchar();
}
/* cant get here ... */
exit(EXIT_SUCCESS);
}
/*
* on receipt of SIGINT, close tmp file
*/
void leave(int sig) {
fprintf(temp_file,"\nInterrupted..\n");
fclose(temp_file);
exit(sig);
}
しかし、ご覧のとおり、vi はキーボード割り込みを使用して終了しません。パイプで使用しているかどうかは関係ありません。
于 2012-07-12T09:10:51.893 に答える
0
Vi はインターセプトctrl-c
(とほぼ同等esc
) であるためctrl-c
、その設定でアプリケーションを終了することはできません。
ctrl-z
使ってから使ってその罠から逃れることができたkill %
于 2012-07-12T16:46:10.817 に答える