问题标签 [control-c]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
150 浏览

ruby - 为什么 active_record 会破坏 Ruby 陷阱的行为,我该如何解决?

在过去的几天里,我一直在尝试解决一直困扰我的 active_record 问题。railsforumstackoverflow上的帖子已经完全干涸。这些帖子中的长度和详细程度可能会劝阻评论者,所以我再次尝试 - 简而言之。

在 Windows 下,陷阱行为在我的脚本中是正常的 - 直到我“需要 'active_record'”,此时陷阱不再正常工作。它们根本无法运行,它使我的数据库处于混乱状态。

有问题的脚本通过活动记录与其他系统上的其他脚本交互。当用户点击 control-c 或脚本因任何其他原因终止时,脚本在退出之前通知数据库其(脚本)即将到来的厄运是至关重要的。由于陷阱无法使用,我被困住了。

有解决方法吗?如果您对测试代码感兴趣,请参阅我的链接帖子。只需几行即可重现该问题。

谢谢...

0 投票
1 回答
1629 浏览

python - 如何在 WindowsXP Python 控制台程序中禁用 Control-C?

我想将我的 cmd.com 窗口置于 Control-C 不会向 Python 生成 SIGINT 信号的模式(如果重要,则为 ActiveState)。

我知道我可以使用信号模块来处理 SIGINT。问题是处理 SIGINT 为时已晚;当它被处理时,它已经中断了一个系统调用。

我想要与 *nix“原始”模式等效的东西。只需让输入排队,当我的应用程序可以安全地读取它时,它就可以了。

令人发指的是, msvcrt.getch() 似乎将 Control-C 作为一个字符返回。但这仅在程序被 getch() 本身阻止时才有效。如果我在另一个系统调用中(睡眠,只是举个例子),我会得到 SIGINT。

0 投票
3 回答
78367 浏览

java - 在 Java 中捕获 Ctrl+C

是否可以在 java 命令行应用程序中捕获Ctrl+信号?C我想在终止程序之前清理一些资源。

0 投票
1 回答
1017 浏览

objective-c - 在 Objective-C 中将 control+c (SIGINT) 发送到 NSPIPE

我正在尝试终止通过 NSTask 生成的 openvpn 任务。

我的问题:

我应该将ctrl+ c(SIGINT) 发送到我的 NSTask 的输入 NSPipe 吗?

或者,我正在考虑使用 kill(pid, SIGINT); 但它会复杂得多,因为必须通过绕道确定进程 ID([task processIdentifier] 在这里没有帮助) - 原始 NSTask 调用:

这不好,我知道,但它只被调用一次,并且在这种情况下已经输入了 sudo 密码。

0 投票
3 回答
2182 浏览

android - 将 Control-C 发送到通过 Runtime.getRuntime().exec("su"); 运行的进程;

我正在开发一个需要以 root 用户身份运行命令的应用程序,所以我使用:

然后我启动 te 进程:

当我需要完成的过程os.writeBytes("exit\n");不起作用并且process.waitFor();被阻止并且过程没有完成时。我需要将 Control-C 发送到进程以停止它,但我不知道该怎么做。

谢谢。

0 投票
1 回答
662 浏览

java - Java Swing:为什么在JFrame中拖放会触发“Ctrl+C”加速器?

我创建了一个 JFrame 并将一个 JMenuBar 放入其中,添加了一个带有“Ctrl+C”加速器的“复制”菜单项。完整的源代码粘贴在下面。当我在 JFrame 中拖放时,我可以看到“Ctrl+C”加速器被触发(因为 ActionEvent 打印在控制台中),就像您在键盘上按 Ctrl+C 一样。

我认为这是一种非常奇怪的行为,我无法弄清楚为什么鼠标操作会触发该热键。它是一个错误吗?

0 投票
1 回答
1320 浏览

linux - Linux Bash 脚本:在 Control-C 之后执行的命令

我的目标是打开一个新的终端窗口,在该窗口中通过 SSH 连接到远程机器,提示用户继续,然后执行命令。我目前有:

这有效并实现了我的主要目标。

问题在于,如果用户在等待“Press ENTER...”提示时尝试通过 Control-C 退出脚本,则会执行命令的其余部分(例如,远程计算机上出现 hello.txt)。

关于为什么会发生这种情况以及如何避免它的任何想法?

谢谢!

0 投票
1 回答
988 浏览

java - 如果 VM 被 Control-C 关闭,我能否确保我的计时器启动线程运行完成?

假设我对以下函数进行了几次调用:

我的理解是此时会有一堆线程同时运行。也就是说,每个计时器实例将以 1 分钟的间隔产生短期线程。

假设我按照此处的说明安装了一个关闭挂钩(按 Control-C 时运​​行):

在 Java 中捕获 Ctrl+C

关闭挂钩将取消所有计时器。(假设我将计时器存储在类级集合中)

我能否保证在 VM 退出之前所有活动线程都将运行完成?

与此相关,关闭钩子是否仅在线程全部退出时才被调用?

0 投票
2 回答
2642 浏览

python - 使用 ^C/KeyboardInterrupt 在子线程中中断 Python raw_input()

在多线程 Python 程序中,一个线程有时会使用内置的raw_input()请求控制台输入。我希望能够在 raw_input 提示符下通过在 shell 中键入 ^C 来关闭程序(即,使用 SIGINT 信号)。但是,当子线程正在执行 raw_input 时,键入 ^C 什么都不做——直到我按下回车键(离开 raw_input)才引发 KeyboardInterrupt。

例如,在以下程序中:

在输入完成之前,键入 ^C 不会执行任何操作。但是,如果我们只是调用T().run()(即单线程情况:只在主线程中运行 raw_input),^C 会立即关闭程序。

据推测,这是因为 SIGINT 被发送到主线程,主线程被挂起(等待 GIL),而分叉线程在控制台读取时阻塞。在 raw_input 返回后,主线程在获取 GIL 之前不会执行其信号处理程序。(如果我对此有误,请纠正我——我不是 Python 线程实现方面的专家。)

有没有办法以类似 raw_input 的方式从标准输入读取,同时允许 SIGINT 由主线程处理,从而降低整个过程?

[我在 Mac OS X 和一些不同的 Linux 上观察到上述行为。]


编辑:我错误地描述了上面的潜在问题。在进一步的调查中,阻止信号处理的是主线程的调用join():Guido van Rossum 自己已经解释过 join 中的底层锁获取是 uninterruptible。这意味着信号实际上被推迟到整个线程完成 - 所以这实际上与所有无关raw_input(只是后台线程阻塞以便连接没有完成的事实)。

0 投票
1 回答
8093 浏览

python - 停止 python 程序

我有一个 python 程序,可以显示电动汽车的电池电压和温度。我通常从 Mac 上的命令行运行它,只需使用向上箭头查找更改目录的命令,然后使用向上箭头查找运行程序的命令。我们想出了如何编写一个自动执行此操作的脚本并将其保存为应用程序。它工作得很好,但不知道如何退出程序。我在使用命令行时使用控制 C。如何在脚本或应用程序中完成?我不想让我们的客户使用命令行。