Articles of pipe理员

任何方式来保留但不提交在Linux内存?

Windows有VirtualAlloc,它允许您保留一个连续的地址空间区域,但实际上不使用任何物理内存。 稍后,当您想要使用它(或其中的一部分)时,再次调用VirtualAlloc来提交以前保留页面的区域。 这实际上是非常有用的,但是我最终将我的应用程序移植到了linux–所以如果以后我不能移植它,我不想使用它。 Linux有办法做到这一点? 编辑 – 用例 我想分配4 GB或一些这样的虚拟地址空间,但一次只提交64K。 这会给我一个零拷贝的方式来增长一个高达4 GB的数组。 这是非常重要的,因为典型的数组大小和副本的两倍会为非常大的数组引入看似随机的不可接受的延迟。

将原始的OpenCV图像传输到FFmpeg

下面是使用OpenCV的python绑定读取networking摄像机的一个非常简单的例子: '''capture.py''' import cv, sys cap = cv.CaptureFromCAM(0) # 0 is for /dev/video0 while True : if not cv.GrabFrame(cap) : break frame = cv.RetrieveFrame(cap) sys.stdout.write( frame.tostring() ) 现在我想输出到ffmpeg,如下所示: $ python capture.py | ffmpeg -f image2pipe -pix_fmt bgr8 -i – -s 640×480 foo.avi 可悲的是,我无法得到ffmpeg的魔法咒语,而且失败了 libavutil 50.15。 1 / 50.15。 1 libavcodec 52.72。 2 / 52.72。 2 […]

C#(单声道)Linux Web服务器托pipe跨线程一致的静态variables

有人知道C#(单声道)Linuxnetworking服务器托pipeconfiguration,使跨线程(即不是每个线程的实例的CGI模型)一致的静态variables? 细节 我有一些C#(单声道)代码,我们需要作为一个简单的Web应用程序的一部分在Linux上托pipe。 我们不需要任何传统的asp甚至asp.net mvc特性,我们只需要能够根据共享的静态variables来dynamic地响应特定的url。 静态variables:我们所要做的一个特殊要求是,我们需要静态variables来保留所有传入请求的值(与使用ASP.net mvc应用程序的窗口相同)。 像Apache mod_mono这样的主持单一c#web应用程序的常见方式似乎是使用“每个线程的c#应用程序实例”模型,其中会有多个独立的c#应用程序实例,每个实例都有自己的静态variables。 这是我们需要避免的问题。 我需要一种托pipeac#应用程序的方式,它提供了一个共同的应用程序,其中包含所有传入请求将看到的一组共享的静态variables。 如果应用程序回收静态variables重置(就像在正常的IIS / MVC),只要回收很less,这是好的。 背景是,这个networking应用程序需要在RAM中保存大量的数据在一个静态variables,并迅速回答有关该数据的问题。 有一个应用程序的副本为每个线程打开会限制RAM资源太多,经常重新加载到内存的数据会使应用程序太慢(偶尔像IIS / Asp.net MVC回收已经很好)。 该系统在Windows / IIS7(每秒超过5万个dynamic请求)上工作得非常好,我们不希望改变这个架构,所以我正在寻找的答案与不改变应用程序devise的托pipe有关。

如何模拟内存分配错误

我的C应用程序使用第三个库,它们自己的内存pipe理。 为了强大,我的应用程序有代码来处理由于缺乏可用内存而导致的库函数失败。 我想testing这个代码,为此,我需要模拟由于内存不足而导致的故障。 推荐使用什么工具? 我的环境是Linux / gcc。

在C中实现多个pipe道

我试图在C中的shell中实现多个pipe道。我在这个网站上find了一个教程,我所做的function是基于这个例子。 这是function void executePipes(cmdLine* command, char* userInput) { int numPipes = 2 * countPipes(userInput); int status; int i = 0, j = 0; int pipefds[numPipes]; for(i = 0; i < (numPipes); i += 2) pipe(pipefds + i); while(command != NULL) { if(fork() == 0){ if(j != 0){ dup2(pipefds[j – 2], 0); } if(command->next != NULL){ […]

无阻塞pipe道使用popen?

我想打开一个使用popen()的pipe道,并具有非阻塞的“读取”访问权限。 我怎样才能做到这一点? (我发现的例子都是阻塞/同步的)

在pipe道中获取命令输出,C为Linux

我需要运行一个Linux CLI命令,并从C中获取stdout输出 我可以使用pipe()来创build一个pipe道,然后fork / exec,在调用exec()之前将subprocess的stdout描述符redirect到pipe道中,并从父进程中的pipe道中读取数据。 另外我需要等孩子。 是否有一个简单的调用来做fork + redirect + exec + wait,就像system()做fork + exec + wait一样,只有system()不做redirect。 有popen(),它做叉+redirect+执行,但不做等待,所以我不能得到退出状态。

为什么不“sortingfile1> file1”工作?

当我想sorting文件,并保存sorting的输出本身,就像这样 sort file1 > file1; file1的内容完全被擦除,而当我试图像这样做“tee”命令 sort file1 | tee file1; 它工作得很好[编辑:“工作正常”,只有对于有幸运的时间的小文件,会导致大数据丢失或无用的进程调度] ,即它覆盖文件1的sorting输出本身,并显示在标准输出。 有人可以解释为什么第一个案件不工作?

内存限制在64位Linux操作系统上运行的32位进程

一个32位进程在64位Linux上有多less虚拟内存(也就是说,在开始获取NULL指针之前,我可以分配多less内存并使用malloc() )? 我在我的32位Linux上试过了,达到了大约3GB的限制。 我能在64位Linux上获得更多的信息吗?

pipe道input/输出

这个问题来自我尝试执行下列指令: Linuxpipe道作为input和输出 如何使用pipe道在两个程序之间发送一个简单的string? http://tldp.org/LDP/lpg/node11.html 我的问题是在Linuxpipe道作为input和输出的问题 ,但更具体的。 本质上,我试图取代: /directory/program < input.txt > output.txt 在C ++中使用pipe道以避免使用硬盘驱动器。 这是我的代码: //LET THE PLUMBING BEGIN int fd_p2c[2], fd_pFc[2], bytes_read; // "p2c" = pipe_to_child, "pFc" = pipe_from_child (see above link) pid_t childpid; char readbuffer[80]; string program_name;// <—- includes program name + full path string gulp_command;// <—- includes my line-by-line stdin for program […]