将shell命令的结果存储在C中的变量中
我想在C程序中执行以下shell命令:将shell命令的结果存储在C中的变量中,c,linux,shell,cmd,C,Linux,Shell,Cmd,我想在C程序中执行以下shell命令: find <folder_name> -name "*.bin" | wc -l find-name“*.bin”| wc-l 并将结果存储在我在程序中声明的变量中。我不希望结果表明命令是否成功执行,我希望结果告诉我目录中存在多少以.bin结尾的文件。下面的代码显然不起作用 char command[10]; command = system("find <folder_name> -name \"*.bin\" | wc -l
find <folder_name> -name "*.bin" | wc -l
find-name“*.bin”| wc-l
并将结果存储在我在程序中声明的变量中。我不希望结果表明命令是否成功执行,我希望结果告诉我目录中存在多少以.bin结尾的文件。下面的代码显然不起作用
char command[10];
command = system("find <folder_name> -name \"*.bin\" | wc -l")
char命令[10];
command=system(“find-name\”*.bin\“| wc-l”)
我需要将
作为命令行参数传递
如何完成这两项任务?非常感谢您的帮助。检索子流程的标准输出
在标准C库中没有这样的函数。使用system
可以将stdout重定向到一个文件,然后使用fopen
从stdio.h
读取它
为了避免使用文件系统,可以使用POSIXpopen
:
#包括
文件*popen(const char*命令,const char*模式);
将参数传递给子流程
如果使用system
,则可以使用标准字符串操作,例如sprintf
生成shell命令行。如果参数中有特殊字符(空格、引号等),这就有点脆弱了
要直接传递参数,可以使用POSIXexecl
,这也在上面的popen
文档中提到。请参阅
#include <stdio.h>
FILE *popen(const char *command, const char *mode);