草庐IT

多进程架构

全部标签

c++ - 在 windows 中使用互斥量进行进程间同步(win32 或 C++)

我想在两个进程之间建立线程同步。基本上一个线程在App1.exe中运行,第二个进程在App2.exe中运行。我如何在Windows中同步这两个线程。有人可以分享一些示例或链接吗。 最佳答案 可能性:WINAPIMutex是一种进程间同步机制。参见UsingMutexObjects概览。boost::mutex.首选此方法的一个原因是所提供的scoped_lock功能可确保释放锁定,无论范围如何退出(异常或多个return语句)。 关于c++-在windows中使用互斥量进行进程间同步(w

c# - 其他进程的 GetKeyboardLayoutName?

基本上,我要做的是让GetKeyboardLayoutName返回其他进程的键盘ID(KLID)。默认情况下,它只返回我的应用程序窗口的键盘ID。我也尝试了GetKeyboardLayout但它不幸地返回了一个HKL(它接受其他另一个窗口的hwnd)。或者,如果有一种方法可以将HKL转换为KLID,那也很好,但我怀疑是否存在这样的事情。那么,我该如何实现呢?我希望能够将获得的KLID用作LoadKeyboardLayout函数的参数。 最佳答案 我只是把它留在这里,以防其他人需要知道每个代码代表什么。我花了几个小时手工制作这份lis

windows - 获取正在运行的进程列表

我在Windows机器上工作,想直接从R获取所有正在运行的进程的列表(基本上是进程ID和正在运行的程序的路径)。我知道Sys.getpid()获取当前R进程的进程ID,但是否也存在一些东西可以让我在机器上运行所有进程,就像我在Linux中使用top或ps-x 最佳答案 您可以使用任务列表:system2('tasklist',stdout=TRUE)[1]""[2]"Nomdel'imagePIDNomdelasessioNum‚rodesUtilisation"[3]"===============================

c++ - 非提升进程是否可以将文件复制到 protected 目录?

当它准备好复制文件时,它要求用户进行提升,我觉得没问题。需要进行复制的程序无法运行提升(它失去了许多重要的环境变量,我无法改变它的启动方式)。我的后备方案是让它生成一个具有提升的进程,该进程实际上执行文件复制,但我宁愿不必向我正在处理的内容添加另一个exe。 最佳答案 使用COMElevationMoniker实例化IFileOperationshell接口(interface),那么使用该接口(interface)完成的所有文件操作都将被提升,而无需提升调用进程,也不必创建单独的EXE/进程来处理文件访问。

python - 子进程标准输入 PIPE 直到程序终止才返回

我一直在尝试排除带有子进程的subprocess.PIPE问题,但没有成功。我正在尝试将命令传递给始终运行的进程并接收结果,而不必每次都关闭/打开进程。这是主要的启动代码:启动器.py:importsubprocessimporttimecommand=['python','listener.py']process=subprocess.Popen(command,bufsize=0,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)#simulatessendinganewcommandever

windows - 有没有办法获取我刚刚在后台启动的控制台程序的进程 ID?

假设我刚刚在后台启动了以下程序:START/BCMD/Ctomcat.exeSTART/BCMD/Ctomcat.exeSTART/BCMD/Ctomcat.exe我想杀死第二个。因为它们具有相同的图像名称,所以我不能使用taskkill使用tomcat.exe杀死它们,否则我会杀死比我想要的更多。我想要的是在每个进程启动时获取它们的进程ID。我的问题是:有没有办法获取我刚刚在后台启动的控制台程序的进程ID? 最佳答案 这是一个实用程序batchfunction这将使您生成一个进程并将其PID设置为一个变量。将其复制粘贴到脚本底部,

c++ - 用户进程看不到服务创建的全局共享内存

我有一个Windows服务(在系统进程中运行)和一个需要共享配置结构的桌面应用程序。数据源自应用程序,但用户进程没有创建全局内存对象的权限,因此我在服务启动时使用CreateFileMapping()和基于thisanswer的DACL创建了它。.这似乎工作正常:我从CreateFileMapping()得到一个非空句柄并且GetLastError()是0。问题是应用程序看不到对象——OpenFileMapping()返回一个NULL句柄和ERROR_FILE_NOT_FOUND——如果我用WinObj手动浏览全局对象,我也看不到它。是什么让我的对象不可见?SECURITY_ATTRI

c++ - 使用 CREATE_NEW_CONSOLE 创建进程并保持控制台窗口打开

我有一个可用的命令行应用程序,它使用WindowsAPI在新的控制台窗口中创建子进程。我正在使用CREATE_NEW_CONSOLE标志,但我需要一种方法来防止新打开的窗口在新进程退出时关闭。这是现有的代码:STARTUPINFOsi;LPCTSTRlpAppName="\\\\fs\\storage\\QA\\Mason\\psexec\\PSExec.exe";stringlpstr="\\\\fs\\storage\\QA\\Mason\\psexec\\PSExec.exe\\\\"+target+"/accepteula-uuser-ppass-s-realtime\\\\f

windows - 如何在 Windows 的 cmd.exe 中终止 java 进程(按名称)?

当我运行jps-lv时,我得到了4748org.apache.abc.runtime.common.abc-XX:PermSize=128m-XX:MaxPermSize=128m-Xmx512m-ea-Dproc_abc11140sun.tools.jps.Jps-Dapplication.home=C:\ProgramFiles\Java\jdk1.7.0_79-Xms8m我需要windows批处理命令来杀死abc。在Linux中,taskkill/f/pid$(jps-lv|grepabc|awk'{print$1}')这可行,但在Windows中,我找不到如何做。请帮帮我。

c++ - 如何检测文件是否被Windows中的其他进程打开

我在Windows中使用_findfirst函数打开文件,但我只想打开其他进程未打开的文件。情况是我将扫描目录读取文件并删除它们,而其他进程会在其中创建新文件。为了避免竞争条件,我发现了这个question其中提到可以使用nosharing选项打开文件。但这是怎么做到的?更新:我无法控制写入过程,所以不知道在创建文件时使用了哪些标志(如果没有)。此外,写入过程可能会发生变化(第三方软件)。 最佳答案 假设您的2个进程是唯一将打开文件的进程,从MSDNopensample:hFile=CreateFile(argv[1],//name