草庐IT

C++ fork()——创建 "list"进程

我有一个程序可以“一个一个”地创建新进程。是否可以更改此代码以创建一个进程“列表”——即子1是子2的父,子2是子3的父,等等?#include#include#include#include#include#include"err.h"usingnamespacestd;intmain(){pid_tpid;inti;cout 最佳答案 如果你想保持循环以便动态设置fork树的深度,//SetDEPTHtodesiredvalue#defineDEPTH4intmain(){pid_tpid;inti;cout输出Myprocess

c++ - 通过调用 CreateRemoteThread : crash 弹出 dll

我正在尝试为自己制作一个从进程中提取/释放dll的工具。我已经体验过LoadLibrary和注入(inject),但这次逻辑似乎不适用。这是我的代码:HMODULEfindModuleOffset(HANDLEproc,char*mod_name){//Findsmoduleaddressinspecifiedprocess.0ifnotfoundHMODULEhMods[2048];DWORDmodules_byte_size;if(EnumProcessModules(proc,hMods,sizeof(hMods),&modules_byte_size)){for(unsigne

c++ - std::thread::join 何时会因 no_such_process 而失败

std::thread::join()允许失败,如果线程“无效”,则为no_such_process抛出std::system_error。请注意,no_such_process情况不同于不可连接的线程(错误代码为invalid_argument)。在什么情况下会发生这种情况?或者,我必须怎么做才能确保join()不会因此而失败?我想要一个析构函数join()它管理的一些线程,当然我希望析构函数永远不会抛出异常。什么可以使(正确构造且未被破坏的)线程“无效”。 最佳答案 Inwhatcircumstancesmightthathap

C++ 进程管理

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion是否有一个众所周知的、可移植的、好的C++进程管理库?我找到了一个很有前途的库,叫做Boost.Process,但它只是一个包含在Boost库中的候选者。有人用过这个吗?有谁知道为什么它不是Boost的一部分?

C++ winAPI 基础 - 通过窗口切换

不太确定如何以清晰的方式解释它。基本上,问题是我正在寻找一种方法来更改当前事件窗口(自己制作的定义,希望它足够容易理解)-直接键入文本的窗口现在。哇哦。我已经发现的是msdnhelp和SetFocus()或SetActiveWindow(),但它没有解决我的问题(或者,也有可能,我只是以错误的方式使用它)。简单地:HWNDDest=GetFocus();...//Somemovingaroundonthe'alt-tablevel':-|SetFocus(Dest);不会再次将目标窗口设置为事件状态。请原谅新手问题,希望不会占用您太多时间。谢谢! 最佳答案

c++ - 如何初始化boost::process::child(boost process 0.5)?

我想存储boost::process的子进程,但不知道如何初始化它操作系统:win764位编译器:msvc200832位boost:1_55_0简化后的例子#include#include#include#includevoidtest_boost_system(){namespacebp=boost::process;namespacebpi=boost::process::initializers;//bp::childchild;//#1boost::system::error_codeec;bp::childchild_2=bp::execute(bpi::run_exe("l

C++ 多线程 - 内存同步

我有两个由不同线程调用的函数:voidSetPtr(T*ptr_){ptr=ptr_;}voidProcess(){if(ptr!=nullptr){ptr->fun();//fun()cancallProcess()again}}我知道SetPtr在有人可以调用Process之前被调用,但是因为这些函数是由单独的线程调用的,所以内存可能不同步,即Process可能会看到一个初始的ptr值,或者可能会尝试读取一个未完全写入的ptr。我可以使用std::lock_quard来提供同步,但我想看看其他可能性。为这种情况提供内存同步的其他方法有哪些?编辑1如何在可以随时调用SetPtr的情况

c++ - Qt避免警告'QProcess : destroyed while process still running

最简单的代码:voidtest{QProcessp;p.start("sleep10");p.waitForBytesWritten();p.waitForFinished(1);}当然,在函数结束前进程是不能结束的,所以会显示警告信息:QProcess:Destroyedwhileprocess("sleep")isstillrunning.我不希望显示此消息-我应该在函数结束之前自行销毁该进程,但我找不到如何正确执行此操作:p.~QProcess(),p.terminate(),p.kill()帮不了我。注意:我不想等待进程执行,只是在它运行时自行终止它。

c++ - 如何检查进程是否关闭/事件?

我正在用C++编写程序。在我的代码中,我使用函数CreateProcess运行进程A.进程A启动另一个进程B。B工作了一段时间,然后关闭。B的运行时间取决于各种参数。有时B工作1小时,但有时-将近2小时。我需要知道B何时结束工作(B何时关闭)。如何检查第二个程序B的结束?也就是说,有没有什么函数(比如WINAPI)可以检测进程是否存活? 最佳答案 使用WaitForSingleObject(),传入进程句柄。 关于c++-如何检查进程是否关闭/事件?,我们在StackOverflow上找

C++ WIN API : When creating a child process using CreateProcess, 是否需要使输入参数具有全局生命周期?

我对C++和WindowsAPI都很陌生。今天突然想到是不是需要把CreateProcess的入参保持一个长生命周期。根据MSDN:BOOLWINAPICreateProcess(_In_opt_LPCTSTRlpApplicationName,_Inout_opt_LPTSTRlpCommandLine,_In_opt_LPSECURITY_ATTRIBUTESlpProcessAttributes,_In_opt_LPSECURITY_ATTRIBUTESlpThreadAttributes,_In_BOOLbInheritHandles,_In_DWORDdwCreationFl