jjzjj

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

我正在制作一个用C++编写的注入(inject).dll,我想使用命名管道与C#应用程序通信。现在,我在C#应用程序中使用内置的System.IO.Pipe.net类,并且在C++中使用常规函数。我在C++方面没有太多经验(阅读:这是我的第一个C++代码..),但我在C#方面很有经验。似乎与服务器和客户端的连接正常,唯一的问题是消息没有被发送。我尝试将.dll作为服务器,将C#应用程序作为服务器,将管道方向设为InOut(双工),但似乎都不起作用。当我尝试使.dll成为向C#应用程序发送消息的服务器时,我使用的代码如下:DWORDServerCreate()//functiontocr

c++ - SIGINT 信号在写入管道期间被丢弃

我有一个程序使用pcap_dump函数将使用libpcap收集的pcap数据转储到标准输出,标准输出作为文件*。需要对SIGINT进行一些清理,所以我使用sigaction()来处理它。这在从shell执行时效果很好。但是,这个程序本来是要被另一个程序调用的,好像不行。这个“调用者”程序先调用一个pipe(),然后调用一个fork(),然后子进程的stdout文件描述符被关闭,并替换为管道的写入端。最后在子进程中执行前述的pcap程序。这样pcap数据就通过管道写入了调用程序。这也很好用。但是,当我向正在写入管道的子进程发送一个SIGINT时(好吧,pcap程序认为它正在写入stdou

c++ - 如何在没有延迟的情况下从 Win32 中的另一个进程捕获标准输出?

我想做的类似于VisualStudio在其输出窗口或其他编辑器在其工具窗口中所做的:从我的进程A启动另一个进程B并捕获其stdout/stderr输出。到目前为止,我使用CreatePipe()让它工作,但由于某种原因,B的输出在写入时并没有立即到达B。它的行为更像是某种缓冲区被填满,当缓冲区已满时,所有缓冲区内容立即到达A。我编写了自己的测试程序,该程序输出一些内容并随后直接执行fflush(stdout)。然后输出直接到达A。但是我不能更改我想那样使用的所有B进程的代码。尝试从A冲洗管道也不起作用。这应该如何工作?我的初始化代码和消费代码:sa.nLength=sizeof(SEC

c++ - socket 之间的管道

我有一个充当镜像的C++服务器。进入的东西会到达不同的socket。现在,它将套接字读入缓冲区并将其写入另一个套接字。我想提高吞吐量。我已经readstuff关于sendfile()和splice(),但它似乎仅限于“文件到套接字”传输。也许套接字之间的简单pipe()会起作用。你有什么建议?可移植解决方案将是完美的,但如果它仅适用于Linux也很好。 最佳答案 您可以在Linux中设置命名管道。多个进程可以从中读/写。查看此链接:http://www.cs.fredonia.edu/zubairi/s2k2/csit431/mor

c++ - 程序在 Visual Studio 2012 中运行,但不在 ideone.com 中运行

我有一种直觉,VS2012在这方面是错误的,但我不确定。看了之后thisquestion,我想尝试实现类似的东西。我的版本在VisualStudio2012上运行良好,但甚至无法在Ideone上编译.这是我的主界面:#include#includetemplatestructPipe{typedefInin_type;typedefOutout_type;Inin_val;Pipe(constin_type&in_val=in_type()):in_val(in_val){}virtualautooperator()()const->out_type{returnout_type();

c++ - 在不同平台上通过管道传输数据的最佳和安全方式

目前我正面临一个问题,我正在通过从x64arch到x86arch的管道传递缓冲区对象。该对象还包含一些指针值,在x64中为8个字节,而在x86中相同的指针大小为4个字节。现在,当我通过管道传输对象时,它的大小比x86平台对同一对象的预期大一点(因为这里的指针大小更小)。我可以从这个论坛的类似帖子中了解到我可能需要使用序列化,但我不知道如何使用,因为我以前从未使用过序列化。序列化会解决这个问题吗?我正在使用带有GCC编译器的C++。我希望该产品适用于所有架构(ia64、x64或x86)。 最佳答案 指针是指向本地运行程序*中内存位置的

c++ - Gnuplot,来自 Windows 的 C++。命令窗口打开和关闭

我有以下内容,无论我尝试什么,命令窗口都会再次打开和关闭。没有图显示,没有文件被写入。任何有从C++使用gnuplot的解决方案的人。我有4.4和4.6rc1可用。#ifdefWIN32gp=_popen("C:\ProgramFiles(x86)\gnuplot\bin\pgnuplot.exe","w");#elsegp=popen("gnuplot-persist","w");#endifif(gp==NULL)return-1;/*fprintf(gp,"unsetborder\n");fprintf(gp,"setclip\n");fprintf(gp,"setpolar\n

java - Windows 上从 Java 到 C++ 的高效数据传输

我希望将大量数据(高达~1Gbit)从Java流式传输到C++应用程序(都在同一台机器上)。我目前在Linux上使用FIFO,但也需要Windows解决方案。最跨平台的方法似乎是本地套接字,但是:a)我不会从TCP校验和复制到内核空间和从内核空间复制大量开销吗?b)普通用户的防火墙不会尝试检查并可能阻止连接吗?看起来更安全的解决方案可能是使用JNI和命名管道API(\.\pipe\blah),这会在连接的两端造成平台特定的困惑。这真的是我的2个最佳选择吗(人们会推荐哪个?)谢谢! 最佳答案 你应该看看ProtocolBuffers来

iphone - 将 iOS 上的 printf 重定向到用户界面

我是iOS开发(和Obj-C)的新手,我正在尝试将现有的C程序移植到iOS。C程序通常在控制台运行,但我想在iPhone上为它制作一个UI。我已经移植了C代码,当模拟器运行时,我可以在控制台窗口中获得printf输出。我想尽可能避免更改原始代码,所以这是我的计划:程序需要一些时间来执行,所以我想我需要在一个单独的线程上运行它。看起来我只需要一个NSInvocationOperation来调用它的主要方法。我会将标准输出重定向到管道。在另一个线程上,我将从管道中读取数据,并将其发送到UI。我不确定用于此的最佳并发API是什么。这对iOS来说是个好策略,还是有更好的移植方法?有什么我应该注

Angular中的管道Pipes

Angular中的管道(Pipes)是一种强大的工具,它可以处理和转换数据,然后将其呈现在视图中。它们可以被用于排序、格式化和过滤数据等任务。在本文中,我们将介绍Angular中的管道以及如何使用它们来简化开发过程。管道的基本用法管道的基本用法在Angular中,我们可以通过声明一个管道类来定义一个管道。例如,我们可以创建一个名为"uppercase"的管道来将字符串转换为大写格式:import{Pipe,PipeTransform}from'@angular/core';@Pipe({name:'uppercase'})exportclassUppercasePipeimplementsPi