Articles of pipe理员

ffmpeg av_interleaved_write_frame():窗户下的pipe道破损

我使用ffmpeg将原始媒体文件转换为rawvideo yuv格式,将yuv转换为pipe,然后我的命令工具接收原始的yuv作为input,做一些处理。 例如: D:\huang_xuezhong\build_win32_VDNAGen>ffmpeg -i test.mkv -c:v rawvideo -s 320×240 -f rawvideo – | my_tool -o output 每次运行命令的时候,ffmpeg都会把这个av_interleaved_write_frame(): Broken pipe转储av_interleaved_write_frame(): Broken pipe error msg: Output #0, rawvideo, to 'pipe:': Metadata: encoder : Lavf56.4.101 Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 320×240 [SAR 120:91 DAR 160:91], q=2-31, 200 kb/s, 24 fps, 24 tbn, 24 tbc […]

如何拦截Windows中的物理电源button?

是否有任何方法来拦截物理电源button的事件,以便对此事件作出反应? 即: Push button -> My program catches the event -> My program performs action. 我的目标是编写一个C#程序/服务来监听电源button事件,然后打开“问我该怎么做”的closures对话框(就像在Windows XP的时代那样)。

使用C#获取连接到命名pipe道服务器的客户端的进程ID

我不确定我是否没有看到它,或者是什么? 我需要知道从NamedPipeServerStream实例通过命名pipe道连接到我的服务器的客户端的进程ID。 这样可能吗? 同时我想出了这个function: [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool GetNamedPipeClientProcessId(IntPtr Pipe, out UInt32 ClientProcessId); public static UInt32 getNamedPipeClientProcID(NamedPipeServerStream pipeServer) { //RETURN: // = Client process ID that connected via the named pipe to this server, or // = 0 if error UInt32 nProcID = 0; try { IntPtr hPipe = pipeServer.SafePipeHandle.DangerousGetHandle(); GetNamedPipeClientProcessId(hPipe, […]

如果我为我的程序创build一个新的文件types,如何正确使用“打开方式”?

我做了一个程序。 我也做了我自己的文件types,程序可以创build,打开和编辑。 在资源pipe理器中,我右键单击这个新的文件types,并select“打开方式”,并select我的程序。 当然,它只是在不加载文件的情况下打开程序。 我怎么让我的程序知道它被要求在启动时打开一个文件? 有一些命令行参数,“打开方式”发送?

我如何读取subprocess的输出?

我写了一个函数,试图通过pipe道读取subprocess的命令行输出。 这应该是MSDN创buildsubprocess的一个简单的子集与redirect的input和输出文章 ,但我明显犯了某种错误。 下面的ReadFile(…)调用将永远封锁,无论我将它放在WaitForSingleObject(…)调用之前还是之后,该调用都将指示subprocess的结束。 我已阅读所有提示“使用asynchronousReadFile”的答案,如果有人能够给我一些想法如何在pipe道上完成,我愿意接受这个build议。 虽然我不明白为什么这种情况下需要asynchronousI / O。 #include "stdafx.h" #include <string> #include <windows.h> unsigned int launch( const std::string & cmdline ); int _tmain(int argc, _TCHAR* argv[]) { launch( std::string("C:/windows/system32/help.exe") ); return 0; } void print_error( unsigned int err ) { char* msg = NULL; FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), […]

如何在使用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的文件不会出现在那里。 我在这里失踪或做错了什么?