如何在“system”命令中包含字符串变量(char *) – linux

前端之家收集整理的这篇文章主要介绍了如何在“system”命令中包含字符串变量(char *) – linux前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
char * S =“你好”; //假设它是动态分配的

当S被视为具有值“hello”的字符串时,我想在下面的语句中使用S.

system(“grep S searchtext.txt> result.txt”);

我该怎么做呢?

解决方法

在普通的C中,传统上使用 snprintf()将命令行字符串格式化为缓冲区:
char buf[1024];
snprintf(buf,sizeof(buf),"grep '%s' searchtext.txt > result.txt",S);
system(buf);

当然,出于安全原因,如果S来自外部源,例如文件,数据库用户本人,则不应该这样做.这可能导致shell code injection.

猜你在找的Linux相关文章