Articles of 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 […]

如何强制中止“glibc检测到***免费():无效指针”

在Linux环境下,当“glibc检测到*** free():invalid pointer”错误时,如何识别哪一行代码导致了这个错误? 有没有办法强制中止? 我记得有一个ENV var来控制这个? 如何在gdb中为glibc错误设置断点?

Bash:可以使用相同的input文件作为pipe道命令的输出吗?

考虑这样的事情: cat file | command > file 这是好的做法吗? 这可能会覆盖input文件,因为我们正在阅读它,或者它总是先读取内存然后pipe道到第二个命令? 显然我可以使用临时文件作为中间步骤,但我只是想知道.. t=$(mktemp) cat file | command > ${t} && mv ${t} file

命令在terminal中工作,但不通过QProcess

ifconfig | grep 'inet' 通过terminal执行时正在工作。 但不通过QProcess 我的示例代码是 QProcess p1; p1.start("ifconfig | grep 'inet'"); p1.waitForFinished(); QString output(p1.readAllStandardOutput()); textEdit->setText(output); 没有什么是显示在textedit。 但是当我在qprocess的开始只使用ifconfig时,输出显示在textedit上。 我有没有想过构build命令ifconfig | grep 'inet'任何技巧? ifconfig | grep 'inet' ,就像用' \| '和\| 为| ? 为特殊字符? 但我也试过,以及:(