草庐IT

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

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

c - 你如何在 C 中创建一个在父进程死后运行的进程?

我正在用C编写一个简单的程序,它使用exec函数打开Internet浏览器。但是,在我关闭互联网浏览器之前,该程序不会终止。编写此程序以打开Internet浏览器然后结束的最佳方法是什么? 最佳答案 当您使用exec时,您的整个进程将被替换为新进程的镜像,而当前进程将不复存在。相反,预先fork一个新进程(如果需要setsid将其从父进程中分离)和然后exec新的进程镜像。fork的进程将被新的进程镜像替换,父进程将保持事件状态。如果您想让父进程保持打开状态直到子进程退出,请查看waitpid。编辑:为了将来的引用,是的,setsi

windows - 无法在使用 CreateDesktop Windows 10 创建的新桌面上启动新进程

我正在尝试在Windows10的新桌面上启动新进程“calc.exe”。当我尝试切换桌面时,屏幕变黑(看起来是一个没有背景的新桌面)。然后它按预期切换回主桌面,我看到在那里启动了calc.exe。下面是代码片段。我正在使用VisualStudio2015进行开发。为什么calc.exe不在第二个桌面上启动?HDESKoriginalDesktop;HDESKsecondaryDesktop;originalDesktop=GetThreadDesktop(GetCurrentThreadId());LPWSTRsecondaryDesktopName=L"Mysecondary";se

windows - 是否可以启动一个新进程并将其主窗口设置为我的 MDI 应用程序的子窗口?

是否可以启动一个新进程并将其主窗口设置为我的MDI应用程序的子窗口?场景是:我有一个MDI应用程序,我想将Adob​​eAcrobat作为我的MDI应用程序的子窗口启动。 最佳答案 理论上,我相信可以使用SetParent.但是,在实践中,这可能比您预期的要困难一些。此外,您还需要同步样式等。只是一个想法,如果你想嵌入AcrobatReader(不是完整的Acrobat),你可以通过嵌入一个webcontrol并在其中使用acrobatreader插件来更容易地做到这一点......以下是一些使这项工作(至少是部分工作)的人的例子:

java - 从 Java Servlet 模拟用户

给定一个JavaServlet(在Windows服务器上运行),它通过ProcessBuilder创建一个新进程,我有什么选择可以让这个新进程以调用对servlet的原始Web请求的用户身份运行?澄清一下,我想要的是类似ProcessBuilderpb=newProcessBuilder("whoami");Processp=pb.start();//p.getOutputStream()shouldcontainthenameoftheremoteuser,//nottheuserrunningtheappserver真正的目标是执行一些安全检查(例如,查看用户是否能够打开文件,或查

windows - 一旦进程结束,进程句柄会发生什么?

如果我有一些已停止(终止或刚刚结束)的Windows进程的句柄:句柄(或者更好的是它背后的内存)是否会被另一个进程重新使用?或者从现在开始,GetExitCodeProcess()等方法会永远得到正确的结果吗?如果1.为真:GetExitCodeProcess()工作“多长时间”?如果2.为真:这是否意味着我可以通过启动/终止新进程来关闭操作系统,因为我创建了越来越多的句柄(并且操作系统为它们保留了内存)?我对句柄的概念有点困惑。提前致谢! 最佳答案 句柄间接指向一个内核对象。只要有打开的句柄,该对象就会保持事件状态。Willthe

c++ - 在不创建新进程的情况下在另一个进程中运行可执行文件

我想编写一个程序来运行可执行镜像而不创建新进程...我想这样做是因为我想使用plink将密码发送到远程ssh服务器...plink程序发送命令行中提供的密码。如果我使用fork和exec函数,有人可以使用进程资源管理器或ps-aef或cat/proc//cmdline查看命令行中提供的密码。如何避免这个安全漏洞..而且这个程序必须在linux和windows上运行.. 最佳答案 将SSH服务器设置为使用RSA公钥/私钥身份验证而不是密码。一般来说,这通常是SSH的更好选择。参见http://www.google.com/search

javascript - Internet Explorer 如何决定为新浏览器窗口跨越新进程?

借助LCIE功能,InternetExplorer能够生成新进程并为不同的浏览器窗口提供不同的进程。InternetExplorer如何决定生成新进程?我做了一些测试并观察到以下行为:对于纯网站,IE通常会为不同的网站生成进程域(当URL的主机名或端口不同时)IE似乎也遵守sessioncookie和其他一些东西背景是,我有一个重量级的Web应用程序,由一个主窗口和不同的子窗口组成,使用JavaScriptwindow.open()从主窗口打开我们的子窗口使用Acrobat-PDF-viewer来显示非常大的PDF文档。这会消耗大量内存,除此之外,PDF查看器似乎会随着时间的推移而泄漏

c# - Windows如何获取已经运行的进程的进程组?

我有一个使用Process.Start(ProcessStartInfoinfo)启动新进程的WPF应用程序。如何获取进程的组进程ID,以便我可以使用GenerateConsoleCtrlEvent发送Ctrl+C信号?https://msdn.microsoft.com/en-us/library/windows/desktop/ms683155%28v=vs.85%29.aspx但是,我在创建的新进程中似乎找不到控制台窗口的组进程ID。它有当前Windows用户的sessionID和进程ID。编辑:我终于让我的程序运行了,但我仍然没有找到真正问题的真正答案。我能够通过使用Gener

c# - 如何从 WinForms 应用程序控制新进程窗口的大小和位置?

我的WinForms应用程序使用Process.Start()在其native应用程序中打开文件。我想将屏幕分成两半,在一半上显示我的WinForms应用程序,在另一半上显示新进程。我知道我可以使用Process.MainWindowHandle获取窗口句柄,但我如何设置它的大小和位置?我想我必须使用某种WindowsAPI,但使用哪一种以及如何使用?由于这并不是真正“在我的驾驶室”,我不确定我是否(以及如何)需要在64位Windows上使用不同的API。 最佳答案 有问题的WindowsAPI方法是SetWindowPos。您可以