我想使用几乎自动化的工具来检查我的程序内存(我还不擅长使用gdb),所以我最终选择了使用valgrind。
然而,我想将管道作为valgrind的输入;即我想输入以下内容:
>cat file.h | ./prog
我会尽力而为:
我尝试做一个
>valgrind `cat file.h | ./prog`
没有成功。
我还试图制作一个脚本文件,在其中放置整个命令,然后将其传递给valgrind,但也没有取得更多的成功。
正如评论中提到的,您应该能够使用以下任一方法:
cat file.h | valgrind ./prog
valgrind ./prog < file.h
ls -al | valgrind ./prog
ps -axuwww | valgrind ./prog
如果您只想获取文件的内容,则后一种方法更有效。
您尝试的反引号方法并不适用于此处要做的事情。它适用于当您希望一个命令的输出成为另一个命令的参数时(例如,ls -al cat namelist
以对名为nameless的文件中列出所有文件进行长时间详细列表)。
cat file.h | valgrind ./prog
吗? - olivervalgrind ./prog < file.h
进行尝试。其中,valgrind
是一个内存调试工具,./prog
是你要运行的程序文件名,< file.h
表示将文件file.h作为输入传递给程序。 - Luigi Belli