我想在C程序中执行以下shell命令:
find <folder_name> -name "*.bin" | wc -l
并将结果存储在我在程序中声明的变量中。我不希望结果表明命令是否成功执行,我想要的结果告诉我在目录中存在多少以.bin结尾的文件。以下代码有点无效。
char command[10];
command = system("find <folder_name> -name \"*.bin\" | wc -l")
我需要将<folder_name>
作为命令行参数传递。
我如何完成这两项任务?我真的很感激任何帮助。
答案 0 :(得分:1)
标准C lib中没有单一的功能。使用system
您可以将stdout重定向到文件,然后使用fopen
中的stdio.h
进行阅读。
为避免使用文件系统,您可以使用POSIX popen
:http://pubs.opengroup.org/onlinepubs/9699919799/functions/popen.html
#include <stdio.h>
FILE *popen(const char *command, const char *mode);
如果使用system
,则可以使用标准字符串操作,例如sprintf
来生成shell命令行。如果你的参数中有特殊字符(空格,引号等),这有点脆弱。
要直接传递参数,您可以使用上面execl
的文档中提到的POSIX popen
。