如何将管道作为valgrind的输入?

evo*_*tic 10 linux valgrind

我想用几乎自动化的工具检查我的程序内存(我还不是很好的gdb),所以我最后使用了valgrind.

但是,我想把一个烟斗作为valgrind的输入; 即我想提出以下内容:

 >cat file.h | ./prog 
Run Code Online (Sandbox Code Playgroud)

我试着做一个

 >valgrind `cat file.h | ./prog`
Run Code Online (Sandbox Code Playgroud)

没有成功.

我还尝试制作一个脚本文件,然后将整个命令放入其中,然后将其传递给valgrind,但没有成功.

小智 2

正如评论中提到的,您应该能够使用以下任一方法:

cat file.h | valgrind ./prog
valgrind ./prog < file.h
Run Code Online (Sandbox Code Playgroud)

第一个使用您特别要求的管道,并且可以轻松地成为任何程序的输出,例如

ls -al | valgrind ./prog
ps -axuwww | valgrind ./prog
Run Code Online (Sandbox Code Playgroud)

如果您只是想获取文件的内容,则后一种方法更有效。

您尝试的反引号方法不适合您在这里所做的事情。它适用于您希望一个命令的输出作为另一个命令的参数的情况(例如 ls -alcat namelist列出名为 nameless 的文件中指定的所有文件的详细列表)。