标签: shutdown

如何(最好)将 WM_QUIT 发布到正在运行的进程?

目标:关闭Windows下正在运行的32位GUI进程

  • 我可以访问可执行路径名。
  • 该软件可能有多个副本正在运行,但只有一个副本是从唯一的可执行路径名启动的。
  • 由于可以运行该可执行文件的多个实例,因此只需查看顶层窗口就需要区分哪个可执行文件路径名实际上负责该窗口...

可能的方法:

枚举进程和线程,然后使用PostThreadMessage(thread, WM_QUIT, 0, 0)

  • 这是有道理的,但我担心用什么技术来区分“主线程”

这种方法有一些例子:

枚举顶级窗口,获取进程标识,并将消息发送到窗口:

其他想法:

  • 我的目标应用程序是多语言的 - 所以查看顶级窗口的名称似乎也不正确......因为我不知道它会说什么(它也是根据用户的设置动态的)。

基本上,我想要的是一种可靠的方法来告诉我的应用程序 - 从特定可执行路径名启动的特定实例(参数并不重要 - 但路径很重要),关闭。

有没有更好的方法:

  • 也许创建一个命名信号量来发出信号?
  • 已注册 Windows 消息广播(路径名作为 ATOM 传递)?
  • 还有其他IPC机制吗?

预先感谢您提供的任何想法...

c++ windows winapi shutdown process

4
推荐指数
1
解决办法
5931
查看次数

在java中创建只能在某些安全点杀死的守护进程'like'线程?

我继承的代码是一个服务器,它产生许多不同类型的守护程序线程,这些守护程序线程在它们进入时接收和响应请求.显然,这很危险,需要重构.现在,如果主程序在其中一个守护程序正在处理请求时停止,则该线程可能会在请求中途被杀死,并使某些内容处于不一致状态.

但是,有很多线程分布在代码的不同区域.如果在调用关闭时我不得不手动关闭每个线程,那么在不丢失一些模糊的守护进程的情况下获得逻辑流程可能会有点麻烦.

我想做的是拥有一个类似守护程序线程的线程,但我可以将线程的某些部分标记或切换为关键部分; 这将完成therad从收获到完成.虽然守护程序阻塞并等待请求,但它的行为类似于守护程序线程,但不会阻止VM关闭,并且如果VM正在关闭,它将立即停止.但是,当线程主动服务于特定请求时(线程处于活动状态的一小部分时间),线程将不会被杀死直到它完成并退出它的关键部分.一旦线程完成它的关键部分,它就有资格被杀死.理想情况下,当没有更多的非守护程序线程可用时,VM会立即启动它的关闭过程,即使某些守护程序仍在执行关键工作,也可以通过收集任何未处于临界状态的守护程序然后等待每个剩余的"守护程序"退出这是关键点所以它可能会被杀死.

有没有一种简单的方法来通过实例化一个Thread类(可能是我编写的一个)或设置一个布尔值来获得这种行为,而不是必须显式地编写每个线程来正确处理中断,使其表现得像这样?我正在寻找一种大多数傻瓜证明的方式,以便如果在这样的线程中运行的插件没有被写入以完美地处理中断,则线程仍将正确地完成它的关键部分,然后在VM关闭时退出.

java multithreading daemon shutdown

4
推荐指数
1
解决办法
340
查看次数

停止、终止、关闭和退出有何关系?

我读过《Learn Some Erlang》中有关主管的内容,但完全迷失了。它们具有停止和终止功能

每当您想要终止应用程序时,您都可以关闭虚拟机的最高管理程序(这是通过 init:stop/1 等函数为您完成的)。然后该主管要求其每个子级终止。如果一些孩子是主管,他们也会这样做:

这似乎发送关闭消息以接收“退出”确认

因此,调用stop来关闭进程。但是,在本文后面,他们说必须调用退出函数(一个新的水果!)

当顶级管理程序被要求终止时,它会对每个 Pids 调用 exit(ChildPid, shutdown)。如果子进程是一个工作者并且捕获退出,它将调用自己的终止函数。不然的话,就只能死了。当主管收到关闭信号时,它会以同样的方式将其转发给自己的子级。

最后,他们在子模块中定义了stop函数

-module(musicians).
-behaviour(gen_server).

-export([start_link/2, stop/1]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, code_change/3, terminate/2]).

stop(Role) -> gen_server:call(Role, stop).
Run Code Online (Sandbox Code Playgroud)

init:stop定义在哪里?

他们还发送停止消息

handle_call(stop, _From, S=#state{}) -> {stop, normal, ok, S};
Run Code Online (Sandbox Code Playgroud)

他们的handle_info

handle_info(timeout, S = #state{name=N, skill=bad}) ->
case random:uniform(5) of
  1 -> io:format("~s played a false note. Uh oh~n",[N]),
    {stop, bad_note, S};
  _ -> io:format("~s produced sound!~n",[N]),
    {noreply, S, ?DELAY} …
Run Code Online (Sandbox Code Playgroud)

erlang shutdown termination exit terminate

4
推荐指数
1
解决办法
2357
查看次数

当主机不正常关闭时,docker 容器中的文件会发生什么?

假设我有一个运行某个应用程序的 docker 容器,它有时会将一些数据写入文件夹中的文件,该文件未映射到主机。鉴于主机以不正常的方式关闭(例如拔掉电源线),存储在容器内但未映射到主机的文件会发生什么情况?他们会坚持吗?它会被移除吗?

shutdown docker dockerfile docker-compose docker-machine

4
推荐指数
2
解决办法
619
查看次数

带破折号或斜杠的shutdown.exe参数?

我使用调用shutdown.exe来重新启动安装了不同版本Windows的计算机.

对于Windows XP,命令是:

shutdown.exe -r -f -t 01
Run Code Online (Sandbox Code Playgroud)

对于其他版本的Windows,我使用:

shutdown.exe /L /R /C /Y /T:1
Run Code Online (Sandbox Code Playgroud)

现在看来,第二个命令在Windows XP上不起作用.有谁知道哪些版本的Windows支持斜线和哪些破折号?

编辑:

这不是错误参数的问题.以下是受影响计算机的打印输出(德语版Windows XP):

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\shutdown.exe /L /R /C /Y /T:1
Syntax: shutdown.exe [-l | -s | -r | -a] [-f] [-m \\Computer] [-t xx]
             [-c "Kommentar"] [-d up:xx:yy]

....
Run Code Online (Sandbox Code Playgroud)

windows shutdown batch-file

3
推荐指数
1
解决办法
2万
查看次数

禁用Ctrl-Alt-Del并关闭自助服务终端

我为客户完成了一个应用程序.在谈了一会后,他希望我做一个额外的应用程序或推荐一个他们的自助服务终端.

客户端想要一种防止计算机关闭的方法.他们喜欢禁用Ctrl+ Alt+ Delete(也禁止进程),Alt+ F4关闭浏览器,没有Windows按钮弹出开始菜单,供用户点击或使用键盘关机.显然应该有办法解锁它

我告诉他们我会调查它,但他们真的不需要它.

他们使用的是Windows 7.我可以使用WinAPI调用,还是已经存在的app或lib来执行此操作?

kiosk shutdown windows-7

3
推荐指数
1
解决办法
2万
查看次数

如何以编程方式"解除绑定"套接字?

1)在进程结束之前,套接字似乎没有从LocalEndPoint解除绑定.
2)我已经尝试了另一个问题的解决方案,并尝试等待一分钟 - 无济于事.
3)目前我已经尝试了以下方法来摆脱套接字及其连接:

public static void killUser(User victim)  
    {  
        LingerOption lo = new LingerOption(false, 0);  
victim.connectedSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.Linger,     lo);  
        victim.connectedSocket.Shutdown(SocketShutdown.Both);  
        victim.connectedSocket.Disconnect(true);  
        victim.connectedSocket.Close();  
        clients.RemoveAt(victim.ID);  
    }  
Run Code Online (Sandbox Code Playgroud)

4)经过一段谷歌搜索后,我似乎无法取消绑定端口,因此如果我有足够数量的连接客户端,我最终会用完端口来监听.

c# sockets shutdown ports unbind

3
推荐指数
1
解决办法
1万
查看次数

无法在Mac OSX 10.6上停止Mysql 5.1

我试图在MacOSX 10.6上停止Mysql v5.1,这样我就可以升级到Mysql v5.5.

我相信我在几个月前从源代码安装了v5.1.我尝试了这里列出的所有方法:如何在Mac OS安装上停止MySQL?.

但是,当我执行"mysqladmin shutdown"时,它似乎只会生成另一个mysql进程:

$ sudo mysqladmin shutdown
$ ps -Af | grep mysql
   74 53283     1   0   0:00.01 ??         0:00.01 /bin/sh /usr/local/mysql/bin/mysqld_safe
   74 53324 53283   0   0:00.01 ??         0:00.03 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --log-error=/usr/local/mysql/var/Al.local.err --pid-file=/usr/local/mysql/var/Al.local.pid
  501 53343 52577   0   0:00.00 ttys003    0:00.00 grep mysql
Run Code Online (Sandbox Code Playgroud)

如果我试图杀死这个过程,也会发生同样的事情.(但是,如果我试图杀死mysqld_safe进程,我会得到"没有这样的过程")

我查看了/ Library/StartupItems并且没有MySQL目录.我知道我没有使用MacPorts来安装Mysql.

我在这里错过了什么?我该如何杀死这头野兽?

mysql macos shutdown

3
推荐指数
1
解决办法
7878
查看次数

在JSF中有类似ServletContextListener的东西吗?

我想听一下如果ServletContextListener在一个普通的Servlet Web应用程序中尽可能地启动或停止JSF应用程序.我怎样才能做到这一点?

jsf shutdown startup listener

3
推荐指数
1
解决办法
2973
查看次数

如何在BusyBox关闭时调用停止脚本?

我在/ etc/inittab中运行带有条目的BusyBox

::sysinit:/etc/init.d/rcS
Run Code Online (Sandbox Code Playgroud)

rcS脚本在启动时调用/etc/rc.d/中的所有启动脚本.

如何通过调用/etc/rc.d/xxx停止调用BusyBox小程序"poweroff","halt"或"rebo​​ot"来告诉BusyBox init关闭所有服务?

shutdown init busybox system-shutdown

3
推荐指数
1
解决办法
1699
查看次数