问题标签 [terminate]

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 投票
29 回答
1008793 浏览

python - 有没有办法杀死一个线程?

是否可以在不设置/检查任何标志/信号量/等的情况下终止正在运行的线程?

0 投票
6 回答
1532 浏览

c# - 为什么.exe 拒绝停止?

我已经“继承”了一个我必须调试的遗留 C#/C++ 程序。当前的问题是我关闭程序后.exe 不会停止,即它仍然显示在任务管理器中。

这是一个问题,因为它不会让我重新启动程序,因为只能运行一个实例。通常杀死进程是行不通的;我被迫重新启动。

我的印象是当主程序停止时,所有子线程也应该停止,但我可能错了。

问:什么会导致 .exe 无法停止?

0 投票
5 回答
1503 浏览

.net - 什么会导致 .NET 进程/线程意外终止?

我正在尝试收集 .NET 进程或线程终止原因的完整列表,即使 main() 方法由 try...catch 子句保护。

其中一个原因是 Thread.Abort()(除非您调用 Thread.ResetAbort)。你知道更多的原因吗?

0 投票
3 回答
8269 浏览

bash - 如何从 bash 脚本终止 Cygwin bash 中脚本的进程树

我有一个 Cygwin bash 脚本,我需要在某些条件下监视和终止它 - 特别是在创建某个文件之后。但是,我很难弄清楚如何以与 Ctrl+C 相同的完整性级别来终止脚本。

这是一个简单的脚本(称为test1),它只是等待被终止。

如果此脚本在前台运行,Ctrl+C 将终止tail脚本本身和脚本本身。如果脚本在后台运行,a kill %1(假设它是作业 1)也将终止tail脚本。

但是,当我尝试从脚本做同样的事情时,我发现只有bash运行脚本的进程被终止,而tail挂起与它的父进程断开连接。这是我尝试的一种方法(test2):

如果运行它,后台运行的 bash 子shell 会正常终止,但tail仍会挂起。

如果我像这样使用显式单独的脚本,它仍然不起作用(test3):

tail运行此脚本后仍在徘徊。

在我的实际情况下,创建文件的过程并不是特别有用,所以我不能让它自行终止;但是,通过找出它何时创建特定文件,我可以知道终止它是可以的。不幸的是,我不能使用简单的killall或等效的,因为可能有多个实例正在运行,我只想杀死特定的实例。

0 投票
5 回答
3250 浏览

c++ - TerminateProcess(GetCurrentProcess,0) 的 Mac OS X 等效项;

我正在寻找一种简单且无法捕获的方法来终止我的 C++ 应用程序的 Mac 端口。在我使用的 Windows 中

我可以在 Mac OS X / XCode / GCC 上使用的等效命令是什么?

0 投票
2 回答
6609 浏览

c++ - 如何干净地结束 Lua 线程?

我的情况是我正在使用 Lua (C) API 来执行保存在字符串中的脚本。我希望用户能够终止脚本的执行(如果脚本包含无限循环,这是必不可少的),我该怎么做?

0 投票
3 回答
3779 浏览

c++ - C++ 终止处理程序何时是 Right Thing(TM)?

C++ 标准提供了允许您指定实际调用的std::set_terminate函数的函数。应该只在可怕的情况下被调用,并且当它被调用时,标准描述的情况确实是可怕的(例如未捕获的异常)。什么时候被调用,这种情况似乎类似于失忆——你可以明智地做的事情并不多。std::terminatestd::terminatestd::terminate

我读过它可以用来确保资源被释放——但对于大多数资源,这应该由操作系统在进程退出时自动处理(例如文件句柄)。从理论上讲,我可以看到一个案例,如果说,由于崩溃而退出时,您需要向服务器发送特定消息。但大多数时候操作系统处理应该足够了。

什么时候使用终止处理程序才是正确的?

更新:对自定义终止处理程序可以做什么感兴趣的人可能会发现这个不可移植的技巧很有用。

0 投票
7 回答
23958 浏览

c - 终止进程树(C for Windows)

以前有人问过这个问题,但我在代码中找不到明确的答案。

我打开一个进程 ProcessA(PID 为 1234)。此进程打开一个子进程 ProcessAB (PID 5678)。完成后,我终止了 ProcessA,但我仍然有 ProcessAB 的挥之不去。

如何终止整个进程树?我的意思是,我如何确保如果我终止我打开的进程,我也会终止所有关联的进程?

谢谢

代码表示赞赏。

0 投票
4 回答
2373 浏览

.net - 程序终止自己的进程的正确方法是什么(Windows)

C# .NET 3.5

我有一个控制台应用程序正在被计算机上的另一个应用程序调用。此控制台应用程序持续运行,并从“父”进程侦听标准输入上的数据。

但是,当父级停止或终止时,它启动的控制台应用程序会继续运行。在正常情况下,它使用最少的资源等待来自标准输入的输入。但是,一旦父级离开,这个控制台应用程序就会使 CPU 达到峰值,并以接近 100% 的利用率使其运行的内核饿死。这一直持续到我手动终止该进程。

理想情况下,调用父母会自行清理,特别是因为这是在正常(非异常)“停止”条件下发生的。不幸的是,这个父进程不在我的掌控之中。

我的第一个想法是从控制台应用程序中获取调用父级,并监视其 PID。如果父进程消失,控制台应用程序将自行终止。目前,我正在这样做:

虽然这只是部分起作用 - 它阻止了 CPU 峰值,但如果我从 Sysinternals 精彩的进程监视器查看我的进程,我可以看到 DW20.exe 正在运行 - “Microsoft 应用程序错误报告”程序。它只是......坐在那里,控制台应用程序保留在内存中。

我应该在这里做什么来正确终止进程以避免这种持续的 CPU 峰值和未释放的内存?最终,这需要在没有干预的情况下运行。

PS 我在这里使用命令行应用程序作为“长时间运行的程序”而不是 Windows 服务或 Web 服务,因为父程序只能配置为执行它通过标准输入传递数据的命令行应用程序。(对于那些好奇的人,这是 ejabberd,使用外部身份验证)。

编辑:

等待标准输入输入的代码是:

我之前提到过,当父级终止时,控制台应用程序在 CPU 上变得疯狂。我从 Visual Studio 中为它附加了一个调试器,事实上,它仍然位于 Console.In.Read 这条线上。理论上,当自我监控计时器触发并看到父级消失时,它会在另一个线程在该 Read() 行上时尝试 System.Environment.Exit(0)。

0 投票
3 回答
6472 浏览

delphi - delphi - 在关闭应用程序时终止所有线程(TThread)

我的应用程序是一个 tcp/ip 服务器,主线程只创建一次并一直在监听。当新客户端连接时,主线程创建TClientThread类型的新线程。但是没有正在运行的客户端线程列表,因为这会使我的应用程序有点复杂......有没有办法在所有线程上执行“终止”方法,即使线程很忙(在我的情况下是“忙”意味着它正在等待数据,其中超时设置约为 30 秒......所以无论如何我都必须杀死它,而不是等待。)?简单的关闭应用程序似乎没有在线程上运行“终止”方法,最终导致 FastMM 报告内存泄漏......