Articles of pipe理员

如何在使用netcat时根据请求有条件地做出响应

我正在尝试仅使用Windows批处理脚本来设置Web服务器。 我已经想出了以下脚本: @echo off @setlocal enabledelayedexpansion for /l %%a in (1,0,2) do ( type tempfile.txt | nc -w 1 -l -p 80 | findstr mystring if !ERRORLEVEL! == 0 ( echo found > tempfile.txt ) else ( echo not-found > tempfile.txt ) ) 但是,响应总是一个请求,我的意思是,如果我在浏览器中input这样的内容: REQUEST: localhost/mystring 我会得到以下回应: RESPONSE: not-found 只有在下一个请求中,我才会收到上面提出的请求的正确答案。 发生这种情况是因为一旦netcat接收到一个请求,它会根据请求响应当前尚未更新的tempfile.txt内容。 是否有任何方法来阻止响应,直到tempfile.txt更新或任何其他方法完成预期的结果?

将Azure网站迁移到Azure云服务

我有一个项目,并计划启动作为Azure网站的Web应用程序,然后将其迁移到Azure云服务(也称为托pipe服务)(如果需要作为扩展策略)。 这个决定是因为我读到,Azure网站更加简单快捷,几乎没有Azure特定的configuration或代码。 所以快速简单的开始是项目的一个很好的起点。 但是,这是你的一个很好的起点吗? 将Azure网站迁移到Azure云服务是否与将正常的ASP.NET网站迁移到Azure云服务相同? 您是否会从一开始就从Azure云服务开始? 如果是,为什么? 谢谢你的时间。

VBScript – 单行pipe理员

是否可以使用shell.run命令以pipe理员身份运行指定的程序? 例如: shell.run(cmd.exe) <—Run this as admin shell.run(Notepad) <—Run this as normal 我知道我可以执行脚本作为pipe理员运行,但这意味着该脚本内的一切都以pipe理员身份执行。 我的另一个select是分离脚本并以admin身份运行一个脚本,并在脚本中包含需要以pipe理员身份运行的内容,然后调用另一个脚本运行并正常运行该脚本。

multithreading应用程序崩溃,出现内存使用率高的错误R6016或0xC0000005

这是在Windows XP上使用MSVC2010在C ++中开发的基于multithreading控制台的应用程序。 该应用程序消耗大量的内存。 但是,当内存使用量达到2GB左右(Windows 32位内存限制)时,它会突然崩溃随机的地方与这些错误之一: R6016-线程数据空间不足 0xC0000005:访问冲突读取位置0x02030000 伴随着这个,在控制台“运行时错误”上也出现了很多次的string。 但不知道从哪里来(我的代码不打印它)。 不幸的是,没有确切的堆栈跟踪或位置可用的地方崩溃。 它只是崩溃的地方,尤其是当内存使用量约2GB。 我会期望CRT无法分配内存时返回错误或失败。 在这种情况下,我已经确定应用程序将运行平稳。 但是,为什么在这个地球上它显示的信息框中带有这些导致退出应用程序的错误。 我在这方面挣扎了好多天,现在真的很难忍受。 我试过了: 1)通过debugging器知道代码中崩溃的位置。 但它只是在任何地方崩溃。 例如,大部分在新的内存分配调用类似于: char* ptr = new (std::nothrow) char[1024]; 正如我们所看到的,没有任何应用程序在这里崩溃的理由。 2)缩小代码path,find崩溃的确切场景:我也无法成功。 作为一种解决方法,我认为不要触摸我的应用程序的内存使用2GB。 但是后来出现了一个问题:“即使在低内存使用情况下,它也不会崩溃,这可能只是时间问题呢? 另外,还没有确切的方法来事先知道可以分配多less精确的内存 。 我真的用尽了这个bug,迫切需要帮助/指导。 更新: 我缩小了这是QueueUserWorkItem (将工作项QueueUserWorkItem线程池中的工作线程的Windows函数)的问题。 当调用没有内存的情况下,它会导致线程内的内存分配失败,并出现“运行时错误”。不幸的是,我不能在这里再现这个崩溃的示例代码,因为我通过第三方库调用该函数,它是非常很难从代码中提取代码来进行演示。 但是为了解释,我调用了函数(带有标志WT_EXECUTELONGFUNCTION ),当它完成时,它会从我调用它的地方调用callback(以便它可以处理下一个工作项目)。 作为一种解决方法,我试图把检查应用程序(“私人字节”)的内存使用情况,而不是让它触摸2GB。 希望它应该工作。

我的pipe道为什么失败?

我一直在搞.cmd脚本,想练习pipe道。 我写了一个脚本来制作文件,另一个用Notepad ++编辑它们。 制作脚本(称为create.cmd)如下所示: @echo off copy nul %1 > nul echo %1 编辑脚本(称为edit.cmd)如下所示: @echo off start notepad++.exe %1 现在,我想尝试创build一个文件,然后以文件名称的forms将其输出(因此是回波行)输出到编辑脚本中。 所以我写的是这样的: create foo.txt | edit 但是,这失败了 – 我得到一个打开的Notepad ++窗口,但我新创build的文件不会出现在那里。 我在这里失踪或做错了什么?

64位.Net应用程序中的内存限制?

在我的笔记本电脑上,运行64位Windows 7和2 GB可用内存(由任务pipe理器报告),我能够做到: var x = new Dictionary<Guid, decimal>( 30 * 1024 *1024 ); 没有更多的RAM在我手中的计算机,我想知道这是否会扩大,以便在具有4 GB可用内存的计算机上,我将能够分配60M项目而不是“只是”30M等等? 还是有其他的限制(.Net和/或Windows),我会碰到之前,我能够消耗所有可用的RAM? 更新:好的,所以我不能分配一个大于2GB的单个对象。 知道这一点很重要! 但是,我当然好奇地想知道,如果能够像这样分配2 Gb的块,我能够充分利用所有的内存: var x = new List<Dictionary<Guid, decimal>>(); for ( var i = 0 ; i < 10 ; i++ ) x.Add( new Dictionary<Guid, decimal>( 30 * 1024 *1024 ) ); 如果电脑具有> 20Gb的可用内存,这是否工作?

运行时提升Java应用程序

我的软件出现了一个令人讨厌的问题。 我正在制作与其他现有软件(游戏)交互的程序。 用户报告说他以pipe理员权限运行游戏,在这种情况下,我的程序停止工作。 简短的调查显示,有些人确实需要在pipe理员帐户下运行游戏,有些则不需要。 如果我的程序能够检测到这一点,并且如果游戏以pipe理员帐户运行,则警告用户: 如果用户点击“Elevate”,我想问Windows提升运行我的jar文件的java.exe并调用典型的UAC对话框。 很明显,这次的问题不是关于Java更新,而是JRE 我的问题是:这可能吗? Windows可以提升我的java.exe实例的权限? java有办法做到这一点? 或者我可以使用命令行命令? 我想避免重新启动程序(尽pipe这可能不是那么重要)。 编辑:如果你看看评论,你会看到没有避免重新启动一个应用程序 – 进程只能开始提升,而不是boost 。 这不幸的是,这个问题转移了问题。 基本上,现在听起来更像是:“ 如何用pipe理员权限重新启动我的应用程序? ”。 当然,除非有两个java.exe共享一个jar的窍门…

在Windows任务pipe理器中更改java进程描述

有没有一个命令行参数来设置JVM报告给Windows任务pipe理器的标题? 我所有的java进程都只显示为“javaw.exe”,其描述为“Java(TM)Platform SE binary”。 如果我可以设置一些-param =“这是日食”,那将是很好的,例如,这样我就可以很容易地将它们分开。 这将阻止我经常杀死我的IDE,而不是像tomcat。

你如何发送一个命名pipe道string从umnanaged托pipe代码空间?

我似乎有一个命名pipe道101的问题。 我有一个非常简单的设置来连接从C ++非托pipe应用程序发送到C#托pipe应用程序的单工命名pipe道。 pipe道连接,但我不能通过pipe道发送“消息”,除非我closures似乎冲洗缓冲区并传递消息的句柄。 这就像消息被阻止。 我已经尝试颠倒客户机/服务器的angular色,并调用它们与不同的国旗组合,没有任何运气。 我可以很容易地从C#托pipe到C ++非托pipe的另一个方向发送消息。 有没有人有任何见解。 任何人都可以成功地发送消息从C托pipe非C托pipe? 我可以find大量的内部amanged或非pipe理的pipe道的例子,但不能相互pipe理/从unamanged – 只是声称能够做到这一点。 在清单中,为了清楚起见,我省略了许多包装材料。 我认为相关的关键是pipe道连接/创build/读取和写入方法。 不要担心在这里阻塞/线程太多。 C#服务器端 // This runs in its own thread and so it is OK to block private void ConnectToClient() { // This server will listen to the sending client if (m_InPipeStream == null) { m_InPipeStream = new NamedPipeServerStream("TestPipe", PipeDirection.In, 1); […]

调查内存泄漏

我们在应用程序中有一个缓慢的内存泄漏,我已经通过以下步骤来分析泄漏的原因: 在GFlags中启用用户模式堆栈跟踪数据库 在Windbg中,键入以下命令: !heap -stat -h 1250000 (其中, 1250000是具有泄漏的堆的地址)比较多个转储后,我看到大小为0xC的存储器块随着时间而增加,内存泄漏。 input以下命令: !heap -flt sc给出UserPtr的这些分配,最后: 在这些地址上inputheap -p -a地址总是显示下面的分配调用堆栈: 0:000> !堆-p -a 10576ef8 address 10576ef8 found in _HEAP @ 1250000 HEAP_ENTRY Size Prev Flags UserPtr UserSize – state 10576ed0 000a 0000 [03] 10576ef8 0000c – (busy) mscoreei!CLRRuntimeInfoImpl::`vftable' 7c94b244 ntdll!RtlAllocateHeapSlowly+0x00000044 7c919c0c ntdll!RtlAllocateHeap+0x00000e64 603b14a4 mscoreei!UtilExecutionEngine::ClrHeapAlloc+0x00000014 603b14cb mscoreei!ClrHeapAlloc+0x00000023 603b14f7 mscoreei!ClrAllocInProcessHeapBootstrap+0x0000002e 603b1614 […]