草庐IT

【JavaEE】浅识进程

全部标签

c++ - 创建自己的线程的 native 共享库可以(应该吗?)支持退出 'without warning' 的使用进程?

我开发的产品通常构建为共享库。使用应用程序将加载它,创建一些句柄,使用它们,并最终释放所有句柄并卸载库。库会创建一些后台线程,这些线程通常会在释放句柄时停止。现在的问题是,一些消费应用程序的行为不是很好,并且在某些情况下(取消、错误等)无法释放句柄。最终,我们库中的静态析构函数会运行,并在它们尝试与(现已死亡的)后台线程交互时崩溃。一种可能性是不让任何全局对象具有析构函数,这样可以避免在静态析构期间运行库中的任何代码。这可能会解决进程退出时的崩溃,但它会在应用程序简单地卸载库而不释放句柄(而不是退出)的情况​​下引入泄漏和崩溃,因为我们无法确保后台线程实际上是在他们正在运行的代码被卸载

Windows:如果不从命令行运行,是否可以访问运行 C++ 代码的进程的返回值?

我知道您可以使用命令行或让一个进程创建并运行另一个进程来访问进程的返回值。但是,如果我只是制作一个*.exe并双击它,返回值是否会到达我可以访问的任何地方?如果有,在哪里?我能否更改任何设置,以便在我的进程返回EXIT_FAILURE时,Windows的处理方式与返回EXIT_SUCCESS时不同? 最佳答案 不,我认为没有任何东西保留以这种方式启动的进程的退出值。当您双击快捷方式或可执行文件时,资源管理器会创建进程,然后立即关闭句柄,因为它不再关心会发生什么。您可以编写一个程序,在感兴趣的进程运行时调用OpenProcess。(它

windows - 无法在 cygwin 中终止 Windows 进程

我可以使用以下命令在Cygwin中终止Windows进程:$echo"4128"|xargskill-f但不能使用以下命令:$kill-f4128-bash:kill:f:invalidsignalspecification根据kill的文档,语法应该是正确的https://cygwin.com/cygwin-ug-net/kill.html你可以在那里找到:$kill-f123为什么第二个命令不起作用? 最佳答案 Cygwin有2次击杀:$type-akillkillisashellbuiltinkillis/usr/bin/ki

node.js - 如何将 "CTRL+C"发送到 Node.js 中的子进程?

我尝试生成子进程-vvp(https://linux.die.net/man/1/vvp)。在某个时间,我需要发送CTRL+C到那个进程。我期待模拟会被中断,我会得到交互式提示。之后我可以通过向子进程发送命令来继续模拟。所以,我尝试了这样的事情:varchild=require('child_process');varfs=require('fs');varvcdGen=child.spawn('vvp',['qqq'],{});vcdGen.stdout.on('data',function(data){console.log(data.toString())});setTimeou

c++ - 以编程方式获取用于在非开发人员 Windows 环境中构建进程或库的 DLL 列表

我什至不确定这是否适用于Windows;我还没有看到一个人要求这么普遍的东西并找到解决方案。这可能是可能的,但可能没有用于处理它的API。我有一个自动化测试模块,我正在为Windows工作,它使用一个模块以通用方式处理检测到的EXE,除非它检测到二进制文件来自特定的测试框架。到目前为止,我只能通过查询帮助和处理响应/字符串解析来做到这一点。如果我触发某人在框架之外编写的长时间测试,该测试接受命令行参数寻求帮助,但实际上并不处理这些命令行参数而只是自动运行,这可能会导致问题。因此,有时我会卡在等待测试完成的时候,而不是进行闪电般的快速查询。这就是我试图通过这个花哨的新模块避免的。:)这个

具有不受信任完整性级别的 Windows 进程

我找不到很多关于Windows中不受信任的完整性级别的信息,对此有一些疑问:是否有不受信任的完整性级别进程可以创建命名对象的地方?(互斥锁、事件等)不受信任的完整性级别进程是否应该能够打开一个现有的命名对象,该对象在其创建时通过ACE和SYSTEM_MANDATORY_LABEL_NO_WRITE_UP被赋予安全描述符到MandatoryLevelUntrusted?当我尝试时,它失败并显示0xc0000022(访问被拒绝),而使用MandatoryLevelLow时效果很好。通常不受信任的完整性进程如何与其代理进程通信?(比如googlechrome标签如何与googlechrome

python - 来自 python 子进程的基本 cygwin 命令

我想从python运行cygwin并执行cygwin命令。我使用的是Windows,所以我想在cygwin而不是cmd中运行命令。我正在使用Python3.6.1。我只想知道如何运行基本命令,这样我就可以像ls一样从那里开始工作。我试过:subprocess.call("E:/cygwin/bin/bash.exe","ls")(类似这样的东西,但它不起作用)@pstatix建议的以下解决方案,它使用Popen()。在stdin.write(b'ls')之后运行stdin.close()导致/usr/bin/bash:line1:ls:commandnotfound错误我可以做到以下几

python - 获取进程启动的工作目录

Windows和Python。在当前工作目录更改后,是否可以获取启动进程(不受我控制)的工作目录?我怀疑Windows会不可挽回地丢失此信息,但正在寻求确认。 最佳答案 由eryksun指定:Pythonaddsthescriptdirectorytosys.path,nottheworkingdirectory.TheWindowsProcessParametersstoretheDosPathstringandHandlefortheworkingdirectory.Alltracesoftheinitialworkingdir

c++ - boost::进程间共享内存

我的环境是Windows2008/2012C++VS2013。我希望STL映射在热重启后持续存在。使用boost:interprocess是一种解决方案,其中重新启动的应用程序是服务器端对map进行更新,而另一个客户端应用程序将连接到同一个共享内存段,以使其在服务器应用程序崩溃时保持“事件状态”/出于任何原因重新启动? 最佳答案 是的,你可以做到这一点。您可以使用interprocess::shared_ptr来获取您建议的引用计数。请记住,映射内存并非神奇的事务性,因此如果出现硬故障,则可能会出现损坏。如果您需要稳健的状态持久性,

windows - 在 Docker for Windows 中,如何防止容器在守护进程启动时自动启动?

每次我的DockerforWindows守护进程启动时,它都会启动7个不同的容器。我可以通过dockerkill每个容器..我可以启动额外的容器,做其他事情等等,一切都很好......直到我重新启动。一旦我重新启动docker守护进程,它们就会再次出现,完全相同的7个容器。我可以去哪里清除它们成为自动重启的候选人? 最佳答案 也许这些容器有一个重启策略,这将使Docker在每次发现它们不存在时运行它们?您可以confirmitwithadockerinspect.如果您看到它们在运行,请在杀死它们之前尝试到dockerupdatet