jjzjj

CreateProcess

全部标签

c - 如何以可移植的方式创建流程?

我正在尝试编写一个需要创建其他进程的程序。我已经习惯了WindowsAPI,但现在我需要我的程序也能够在Linux平台上运行。有没有可能以便携的方式做到这一点?我必须为此目的使用预处理器吗?编辑:我需要等待它完成才能继续做事。 最佳答案 在我看来,应该始终避免使用系统函数:它不可靠,因为您不知道哪个shell将处理您的命令,并且它没有办法返回明确的错误代码。此外,在Windows等平台上,进程非常重,启动一个新进程只是为了启动另一个进程并不是一个好主意,顺便说一下,一些安全套件可能会为您的应用程序尝试启动的每个进程发出警告,并且将此

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

c++ - CreateProcess 和重定向输出

有2个应用。AppCMD是一个命令行应用程序,AppMAIN使用一些命令行参数启动AppCMD。不幸的是,AppMAIN似乎无法很好地处理AppCMD的输出,出现了问题。我想记录对AppCMD的调用及其输出以查看发生了什么。为了这样做,我想用另一个二进制AppWRAP替换AppCMD,它将调用转发到重命名的AppCMD并记录它的输出.AppWRAP应该像一个透明的中间人。出于测试目的,我编写了一个简单的AppCMD,它只输出它的命令行参数:#includeusingnamespacestd;intmain(intargc,char*argv[]){cout我关注了MSDN:Creati

c++ - c++并发调用时如何保证CreateProcess只创建一个进程?

引自here:BOOLWINAPICreateProcess(__in_optLPCTSTRlpApplicationName,__inout_optLPTSTRlpCommandLine,__in_optLPSECURITY_ATTRIBUTESlpProcessAttributes,__in_optLPSECURITY_ATTRIBUTESlpThreadAttributes,__inBOOLbInheritHandles,__inDWORDdwCreationFlags,__in_optLPVOIDlpEnvironment,__in_optLPCTSTRlpCurrentDir

windows - CreateProcess 执行 Windows 命令

我正在尝试使用CreateProcess函数执行dos命令:LPWSTRcmd=(LPWSTR)QString("C:\\windows\\system32\\cmd.exesubst"+DLetter+"\""+mountPath+"\"").utf16();STARTUPINFOsi;PROCESS_INFORMATIONpi;ZeroMemory(&si,sizeof(si));si.cb=sizeof(si);ZeroMemory(&pi,sizeof(pi));if(CreateProcessW(0,//Applicationnamecmd,//Applicationargu

windows - Windows 编程中的 _spawnl 和 Createprocess(...) API 有什么区别?

Windows编程中的_spawnl(...)和Createprocess(...)API有什么区别?这些API在创建进程行为方面有何不同。 最佳答案 CreateProcess是用于创建进程的nativeAPI。spawnl是C运行时的一部分,具有类似POSIX的语义。它仅支持一小部分功能(提供命令行参数)并作为CreateProcess的包装器实现。与此同时,spawnl已被弃用,取而代之的是_spawnl。CreateProcess的自然操作模式与spawnl的P_NOWAIT模式相当,但具有附加功能(环境、标准处理安全性信息

c++ - 使用 CreateProcess 函数

我正在尝试使用MicrosoftVisualStudioExpress2013forWindowsDesktop在c++中创建类似于cmd的东西,我的功能之一应该通过键入“skype.exe”来启动类似打开skype的进程。我在互联网上搜索并找到了应该为我完成这项工作的CreateProcess函数。当我创建一个函数来接收我创建的名为Line的类值(类的名称,但它并不是真正的metter)并以如下所示的方式使用CreateProcess函数时,我必须输入我的cmd“开始skype.exe”,但我希望它像在常规cmd中一样工作,只写“skype.exe”,我该怎么做?(l.paramet

c++ - 如何查找给定应用程序是否为单实例?

我正在寻找一种有效的方法来确定给定的应用程序(比如app.exe)是否是单实例?我想到了以下这些sol:执行两次CreateProcess()并检查该应用程序是否有两个或更多实例在运行?如果不是,则为单实例应用程序。但是,这效率不高。执行CreateProcess()并等待1-2秒。如果这个实例被杀死(因为已经有一个实例在为它运行),它将是单实例应用程序。但我对以上两个sol都不满意。在Windows中还有其他有效的方法吗?请注意,我不会终止该应用程序的已运行(如果有)实例或对其进行任何修改。 最佳答案 换个角度想:你写程序的时候,

java - Runtime.getRuntime().exec -> Cannot run program CreateProcess error=2, 系统找不到指定的文件

我正在开发一个命令行java应用程序,它必须在此目录中运行名为gradlew.batassembleRelease的程序:this.workDir+"/Project/CapAndroid"所以我这样做了:Processp=Runtime.getRuntime().exec("gradlew.batassembleRelease",null,newFile(this.workDir+"/Project/CapAndroid"));该文件100%确定位于该目录中,它在Linux中运行完美,但在Windows上无法运行!我收到此错误:java.io.IOException:Cannotru

c++ - 使用具有相对路径的 CreateProcess

是否可以通过相对路径来创建我的子进程?这段代码可以编译,但会报错,因为我使用的是相对路径。voidCminivideo3App::creerChildProcess(void){STARTUPINFOsi;PROCESS_INFORMATIONpi;ZeroMemory(&si,sizeof(si));si.cb=sizeof(si);ZeroMemory(&pi,sizeof(pi));//Startthechildprocess.intretvalue=CreateProcess(TEXT("\..\Debug\traitement.exe"),//Nomodulename(use