问题标签 [waitforsingleobject]
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.
c++ - win32 进程终止检测:WMI 与 WaitForSingleObject
我正在编写一个需要检测特定 Windows 进程终止的 Windows 服务(C++)。
我考虑了两种不同的方法来检测终止:
- 如此处所述使用WMI。
WaitForSingleObject(hHandle, INFINITE)
在进程的句柄上使用 winapi函数。
明显的区别是 WMI 使用了一个CALLBACK
函数。
这两种方法之间的其他主要区别、优点和缺点是什么?
谢谢!
c++ - 线程上的“等待”实际上是如何在 C++ 中工作的
我想了解线程上的“等待”实际上是如何工作的?幕后是否有无限循环(听起来不合理)?
例如,在“WaitForSingleObject”功能的 MSDN/MFC 手册页中,它说
WaitForSingleObject 函数检查指定对象的当前状态。如果对象的状态是无信号的,则调用线程进入等待状态,直到对象发出信号或超时间隔过去。 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx)
这个“等待状态”是什么?线程是如何“唤醒”的,即一个事件的上升或一个对象的信号如何导致线程再次运行?谁检查同步对象以及多久检查一次?
谢谢
java - .exe 文件(jarsigner)在我尝试通过 Windows 进程(C++)启动时挂起
我有一个简单的 jarsigner .apk 文件验证命令:
当我通过 windows cmd 行运行它时它工作正常。
我通常通过特殊的类在我的应用程序中运行 .exe 文件,并且这个类对于一些(说实话,很多).exe 调用运行良好。(我通过管道获取 .exe 文件的输出并通过 WaitForSingleObject 函数等待它)我启动进程并等待它,例如,最多 60 秒。
但是,对于 jarsigner.exe 调用,我得到了非常奇怪的行为:
-当我启动一些简单的命令时,比如'jarsigner.exe',它工作正常(1-3秒,我通过管道得到了一些输出)
-当我启动验证命令('jarsigner.exe -verify path-to-apk-file')时,我可以永远等待但仍然没有输出(尝试了无限超时并等待了很多)。如果我通过 windows cmd 运行相同的命令,它可以工作(接近 10-20 秒)。
有人可以解释一下,是否有任何使用 jarsigner / windows 进程机制的特殊情况,这可能会导致这种奇怪的行为?
c++ - 是否有相当于 WaitforSingleObject 的 C++?
我需要重写一些使用 windows WaitforSingleObject 函数的代码。
我需要等待事件或超时发生。在直接 C++ 中是否有与此等价的功能?
我使用的是 STL C++11,而不是任何其他库,例如 boost。
c++ - GetExitCodeThread() 获取的值错误
我使用CreateThread()
有效参数创建了一个线程。基于一个简单的if-else
条件,我返回DWORD
设置为 1 的类型变量。
然后内部函数:
我WaitForSingleObject()
INFINITE
撒谎。然后我调用函数GetExitCodeThread()
。
我得到了不同的价值,无论我做什么,它都不会改变。它始终是 6。
我也很困惑是否应该使用WaitForSingleObject
as wellGetExitCodeThread
或者我应该只使用其中之一。MSDN上没有提到两者是相互替代的。但我只是想,当WaitForSingleObject
成功时,图片中的线程句柄可能会被释放,或者在最坏的情况下可能会分配给不同的线程。那就GetExitCodeThread
惨败了。
ruby - Ruby Net::Telnet waitfor() 不起作用
我已经检查了许多不同的方法来解决这个问题,它可能是特定于环境的。我在 Ruby 中创建一个脚本来远程登录到远程服务器,登录,输入 shell 类型(登录后的提示符,前面没有“提示符”),然后在下一个提示符处输入用户 ID。目前它通过用户登录并通过,但在术语部分冻结。我曾尝试使用正则表达式、字符串、睡眠,然后只是 puts("xterm" 但没有任何东西允许它通过这个提示。这是一段代码被挂断并且输出继续:
输出如下:
multithreading - 多个线程可以依赖于单个手动 Kill 事件吗?
我有一个具有多个线程的 MFC 代码,这些线程都使用不同的参数对子例程进行递归调用。在子程序的开头,我调用了函数 CheckKillEvent():
如果 CheckKillEvent 返回 true,则立即 return()。
仅供参考,h_killEvent 初始化为:
即,它具有手动重置功能。
但是,在我将 Kill-event 设置如下后,这些线程似乎需要(字面上)永远完成:
问题是,从多个线程调用 CheckKillEvent() 是否存在问题?WaitForSingleObject() 是否应该在关键部分内完成?或者仅仅是我的递归代码不擅长递归到它不再调用自己的点?
visual-studio-2010 - Why is WaitForSingleObject() considering the supplied handle to be invalid?
I'm using Visual Studio 2010 to work on a Win32 app that attempts to read from stdin. It retrieves a valid handle from GetStdHandle(STD_INPUT_HANDLE) and immediately calls WaitForSingleObject() with the handle as a parameter, but the return value is always WAIT_FAILED. I have verified that the value of the file handle is 01, which is odd bc stdin is usually 0, stdout 1, and stderr 2, so this is probably an important clue.
When I used the "Error Lookup" tool the code (6) means that the handle is invalid. In the VS output window I get "WAIT_FAILED. GetLastError() returned: 6" from the code below. Any help greatly appreciated.
c++ - 线程 C++ 中 RegNotifyChangeKeyValue() 的 WaitForSingleObject()
我正在尝试创建一个线程来处理下面的 MSDN 示例。
我已经测试了这个例子,只改变了RegOpenKeyEx中lpSubKey参数中的路径,它工作正常。
这是我正在尝试创建的以下线程,它给了我一个弹出窗口:
r6010 中止()......
编码:
里面void listenerTest()
是MSDN 示例,我做了一些小改动。
我还尝试了其他方法,例如,创建没有 the 的线程WaitForSingleObject()
(这会给出该错误),但我找不到返回等待线程外的 a 的方法HANDLE
(WaitForSingleObject()
在主线程中)。
我不需要threadTest线程和主线程之间的同步。我想要实现的只是threadTest将在 main 执行时运行无限时间。
任何帮助都会被挪用。
谢谢你。
java - 如何检测外部进程退出Java JNA
如何使用 JNA 检测 Java 中的外部进程退出?我的程序执行外部应用程序 1,此应用程序 1 启动另一个应用程序 2 并在退出后。Ant 我的任务是从 application2 获取退出代码。我可以得到一个子进程的 pid 并尝试检测它。但是 waitForSingleObject 不起作用。我想我做错了什么。帮助)