Articles of 进程

64位大型mallocs

malloc()会失败的原因是什么,特别是在64位? 我的具体问题是在64位系统上尝试malloc一个巨大的10GB块。 该机器有12GB的RAM和32GB的交换。 是的,malloc是极端的,但为什么会是一个问题呢? 这是在Windows XP64与英特尔和MSFT编译器。 malloc有时成功,有时不成功,约50%。 8GB malloc总是工作,20GB malloc总是失败。 如果一个malloc失败了,重复的请求将不会起作用,除非我退出这个进程并重新开始一个新的进程(然后成功的时候会有50%的成功)。 没有其他大应用程序正在运行。 即使在重新启动后也会立即发生。 我可以想象一个malloc在32位失败,如果你已经使用了32位(或31位)的可用地址空间,那么没有足够大的地址范围来分配你的请求。 我也可以想象,如果你用完了你的物理RAM 和你的硬盘交换空间,malloc会失败。 这不是我的情况。 但是为什么malloc可能会失败呢? 我想不出其他的原因。 我对通用malloc问题比我的具体例子更感兴趣,我可能会用内存映射文件replace它。 失败的malloc()只不过是一个比其他任何东西都更让人困惑的东西……那种渴望理解你的工具而不会被基础知识所惊讶的东西。

如何从32位进程读取64位registry项?

我一直使用来自HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography的关键MachineGuid的值来唯一标识主机,但是在64位计算机上运行的32位进程中,该值似乎丢失。 我想这是在Wow6432Node,它确实缺less的地方search。 根据这个,你应该能够通过添加一个标志来正确的键,但是下面的代码仍然不能完成这项工作。 我错过了什么? const KEY_WOW64_64KEY=$0100; var r:HKEY; s:string; i,l:integer; begin //use cryptography machineguid, keep a local copy of this in initialization? l:=40; if RegOpenKeyEx(HKEY_LOCAL_MACHINE,PChar('Software\Microsoft\Cryptography'), 0,KEY_QUERY_VALUE,r)=ERROR_SUCCESS then begin SetLength(s,l); if RegQueryValue(r,'MachineGuid',PChar(s),l)=ERROR_SUCCESS then begin SetLength(s,l); RegCloseKey(r); end else begin //try from-32-to-64 RegCloseKey(r); if RegOpenKeyEx(HKEY_LOCAL_MACHINE,PChar('Software\Microsoft\Cryptography'), 0,KEY_QUERY_VALUE or KEY_WOW64_64KEY,r)=ERROR_SUCCESS then begin l:=40; if RegQueryValue(r,'MachineGuid',PChar(s),l)=ERROR_SUCCESS then SetLength(s,l) else l:=0; […]

如何杀死Windows CE中的进程?

我怎样才能杀死从我的terminal(Windows CE 5.0)使用C#代码进程Windows \ MyProcc.exe?

检测外部进程是否交互式,并有任何可见的用户界面

我似乎无法find一种方法来确定一个Process是否有一个用户界面,例如一个窗口,这是用户可见的? Environment.UserInteractive对外部进程没有用处 process.MainWindowHandle != IntPtr.Zero似乎总是在我的testing中返回false? 我想区分说Notepad和conhost

CreateProcess在Windows 7下失败

我试图在Windows 7的新环境下编译Windows XP中的遗留代码。它编译但是在运行时失败。 CreateProcess()返回0,GetLastError()返回2,代表ERROR_FILE_NOT_FOUND 这是我对CreateProcess的调用 STARTUPINFO StartInfo; memset(&StartInfo, 0, sizeof(StartInfo)); wcsncpy(astrCommandLine, L"TFTP", MAX_OSCOMMANDLINE_SZ-1); BOOL bFuncRetn = CreateProcess(NULL, astrCommandLine, // command line NULL, // process security attributes NULL, // primary thread security attributes NULL, // handles are inherited 0, // creation flags NULL, // use parent's environment NULL, // use parent's current directory &StartInfo, // STARTUPINFO […]

PyInstaller将不会安装Python 3.6.0a4和x64 Windows

我曾经说过Python版本(来自https://www.python.org/downloads/windows/ )和x64 Windows 10.每当我尝试执行“pip install pyinstaller”时,它都会崩溃,并显示一个错误消息: C:\WINDOWS\system32>pip install pyinstaller Collecting pyinstaller Using cached PyInstaller-3.2.tar.gz Requirement already satisfied (use –upgrade to upgrade): setuptools in c:\users\jskurski\appdata\local\programs\python\python36\lib\site-packages (from pyinstaller) Collecting pefile (from pyinstaller) Using cached pefile-2016.3.28.tar.gz Collecting pypiwin32 (from pyinstaller) Using cached pypiwin32-219.zip Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line […]

用fork()创build的subprocess在父进程中被自动杀死?

我用C / C ++中的fork()创buildsubprocess。 当父进程结束(或由于某种原因而被终止)时,我希望所有subprocess都被终止。 这是由系统自动完成的吗? 或者我必须自己做? 谢谢。 预先存在类似的问题: 父母如何才能导致subprocess退出? 父母退出后如何让孩subprocess死亡?

对于Windows 7上的64位安装,Python PIP有MS Visual Studio 2010 Express的path问题

我正在创build一个干净安装的Python 3.3,64位版本的virtualenv。 (注:我在我的电脑上安装了几个包括WinPython的python安装程序,但是想要为我正在处理的几个项目设置干净和小的virtualenvs。WinPython版本工作得很好。)当我使用pip尝试安装软件包时,我收到了一个错误信息(如果需要,可以包含pip日志)。 最终,错误信息的最后一行是: File "c:\python33-b\Lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall raise ValueError(str(list(result.keys()))) ValueError: ['path'] 我调查了msvc9compiler.py中函数query_vcvarsall的结果。 我发现这个函数在我的电脑上查找MS Visual Studio 10 Express的vcvarsallpath。 它正在寻找4个组件:INCLUDE =,PATH =,LIB =和LIBPATH =。 这些是特定于MS VS 2010.我的安装发送了一个“amd64”参数到这个函数。 它找不到PATH =语句,但find了vcvarsall.bat文件。 当我欺骗这个函数来使用“x86”参数时,它发现了所有这4个语句,看起来好像运行的很好。 我花了一些时间在网上研究这个。 我发现MS VS Express 2010默认安装为32位。 一个必须设置它运行为64位(这意味着它将设置上面所需的语句。)显然有一个错误,并没有安装这个版本的64位工具。 所以我安装了MS SDK以安装64位工具。 然后我发现有一个修复,并安装(在下面列出的链接)。 有几种方法可以为64位VS创buildpath。 一个是在MS VS的命令行上运行vcvarsall amd64 。 这导致了一个消息说工具没有安装在我的电脑上。 这些工具位于C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64目录中。 它显然正在寻找的文件是vcvars64.bat(或类似的东西)。 我有目录但不是batch file。 […]

如何在Windows下暂停/恢复任何外部进程?

我正在寻找不同的方法来暂停和恢复程序在Windows XP下通过它的进程ID的特定进程。 进程暂停/恢复工具通过SuspendThread / ResumeThread但会警告multithreading程序和死锁问题。 PsSuspend看起来没问题,但我想知道它是否有什么特别的死锁或使用其他方法? 首选语言:C ++ / Python

Internet Explorer 8 64位和Selenium无法正常工作

我正在试图让seleniumtesting运行。 然而,每次我尝试运行一个应该运行IE的testing时,我在htmlutils.js的第863行得到一个错误。它说,我应该禁用我的popup窗口阻止程序。 事情是我去IE工具 – >popup块的转向。 所以它被禁用,我得到这个错误。 有什么我需要禁用。 我实际上甚至不知道它使用Windows 7专业版64位版本时运行的Internet Explorer版本。 所以,当我使用IE浏览器我使用64位版本,但我的理解,如果该网站或类似的东西不支持64位它到了32位。 所以不知道我需要做些什么来使它工作。 这是它所在的路线 function openSeparateApplicationWindow(url, suppressMozillaWarning) { // resize the Selenium window itself window.resizeTo(1200, 500); window.moveTo(window.screenX, 0); var appWindow = window.open(url + '?start=true', 'selenium_main_app_window'); if (appWindow == null) { var errorMessage = "Couldn't open app window; is the pop-up blocker enabled?" LOG.error(errorMessage); throw new Error("Couldn't […]