Tag: 管道

如何使用命名管道在c ++ .dll和C#app之间发送消息?

我正在用C ++编写注入的.dll,我想使用命名管道与C#app进行通信。 现在,我在C#app中使用内置的System.IO.Pipe .net类,我正在使用C ++中的常规函数​​。 我没有太多的C ++经验(阅读:这是我的第一个C ++代码..),我在C#中经验丰富。 似乎与服务器和客户端的连接正常,唯一的问题是messaged没有被发送。 我尝试将.dll作为服务器,将C#app作为服务器,使管道方向为InOut(双工),但似乎没有工作。 当我尝试将.dll发送到C#应用程序的服务器时,我使用的代码是这样的: DWORD ServerCreate() // function to create the server and wait till it successfully creates it to return. { hPipe = CreateNamedPipe(pipename,//The unique pipe name. This string must have the following form: \\.\pipe\pipename PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_NOWAIT, //write and read and return right […]

为什么ffmpeg在进程中间随机停止?

ffmpeg感觉好像花了很长时间。 然后我看看我的输出文件,我看到它在6到8mbs之间停止。 完全编码的文件大约是14mb。 为什么ffmpeg会停止? 我的代码锁定了StandardOutput.ReadToEnd();. 我不得不杀死这个过程(看到它不会移动超过10秒,当我看到它每秒更新一次)然后我得到stdout和错误的结果。 stdout是“”stderr在下面。 输出消息显示文件大小已结束。 我也看到停止时CPU使用率下降。 我从视觉工作室复制了这个论点。 CD到同一工作目录并运行cmd(bin / ffmpeg)并粘贴参数。 它能够完成。 注意:我必须先退出并错误检查是否有故障。 int soundProcess(string infn, string outfn) { string aa, aa2; aa = aa2 = “DEAD”; var app = new Process(); app.StartInfo.UseShellExecute = false; app.StartInfo.RedirectStandardOutput = true; app.StartInfo.RedirectStandardError = true; //*/ app.StartInfo.FileName = @”bin\ffmpeg.exe”; app.StartInfo.Arguments = string.Format(@”-i “”{0}”” -ab 192k -y {2} […]

Owin舞台标记

鉴于这在我的应用程序启动… app.Use((context, next) => { return next.Invoke(); }).UseStageMarker(PipelineStage.PostAuthenticate); app.Use((context, next) => { return next.Invoke(); }).UseStageMarker(PipelineStage.Authenticate); …为什么PostAuthenticate代码在Authenticate代码之前执行? 我不是说“为什么第一个app.use在第二个app.use之前被调用”我的意思是:为什么第一个调用会在第二个调用之前调用,因为第二个应该在请求管道中更早发生? 编辑 与此问题相关: 如何在此代码中获取Windows标识?

管道输出输出到新过程

我有问题将rtmpdump进程的输出传递给ffmpeg,我相信问题是我的进程正在窃取rtmpdump的输出。 在我的研究中,我听说尝试使用cmd.exe进程并在其中运行rtmpdump.exe作为/ C命令,但是这个问题是我丢失了对从中生成的rtmpdump.exe进程的引用,我需要能够在我的程序中管理多个rtmpdump进程,并有时选择性地杀死某些进程。 我最初尝试过这样简单的事情: var p = new Process(); p.StartInfo.FileName = “rtmpdump.exe”; p.StartInfo.Arguments = “-v -r rtmp://somehost.com/app-name -o – | ffmpeg.exe -loglevel quiet -i – -c:v copy -c:a libvo_aacenc -b:a 128k \”test.mp4\””; 这根本不起作用。 使用“cmd.exe”作为初始进程: var p = new Process(); p.StartInfo.FileName = “cmd.exe”; p.StartInfo.Arguments = “/C rtmpdump.exe -v -r rtmp://somehost.com/app-name -o – | ffmpeg.exe -loglevel quiet […]

如何在网络上使用命名管道?

我正在尝试通过命名管道在网络上创建连接。 我正如msdn中所说的那样做。 我用function创建管道服务器端。 CreateNamedPipe( “\\\\.\\pipe\\myNamedPipe”, DUPLEX | FILE_FLAG_OVERLAPPED, 0, 255, BUFFER_SIZE, BUFFER_SIZE, 0, IntPtr.Zero); 并尝试通过CreateFile()函数进行连接 CreateFile( “\\\\10.0.0.29\\pipe\\myNamedPipe”, GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, IntPtr.Zero); 10.0.0.29是服务器机器ip。 如果我试图在服务器计算机上运行客户端程序,管道名称为“\\。\ pipe \ myNamedPipe”或“\\ 10.0.0.29 \ pipe \ myNamedPipe”(10.0.0.29是服务器IP)或“\\ localhost \ pipe \ myNamedPipe“它工作正常。 那么如何在网络上使用命名管道呢?

c#重定向(管道)进程输出到另一个进程

我正在尝试使用Process类在c#中运行一个进程。 Process p1 = new process(); p1.startinfo.filename = “xyz.exe”; p1.startinfo.arguments = //i am building it based on user’s input. p1.start(); 所以基于用户输入我正在构建参数值。 现在我有一个案例,我必须将p1的输出传递给另一个进程说grep。 所以我基本上试过这个 p1.startinfo.arguments =“ – info | grep 1234”; 我的意图是像xyz.exe -info | grep 1234 但这似乎不适用于.net ..我实际上可以创建另一个流程变量并运行“grep”作为一个单独的进程..但我想知道是否有任何方法可以做,因为我尝试上面..

服务面料可靠服务管道设计

如果Service Fabric的可靠服务我需要实现管道,并且从可靠性简单和简单的良好设计的角度来看,我需要一些关于这些方法更优选的指导: