今天搬砖时,偶然间需要在C语言中调用shell命令将字符串写入某个文件中。刚开始想到c语言调用shell命令,想到的无非就是两种方法:
1、system();
2:popen();
两者的区别就在于前者会造成阻塞,而后者不会。简单来说前者是同步的,命令执行完毕才返回,而后者是异步的,不需要等待命令完成。
但是写着写着突然发现,上面的两种方法只能执行拥有固定参数的echo,倘若其要传递的参数是临时获取到,那怎么办呢?
经过一番思索,解决方案如下:
char buf[512];
sprintf(buf,"echo %s > tem.txt",str);
system(buf);
首先定义一个缓冲区buf,大小自己定。然后使用sprintf将需要传递的字符串和echo命令拼接放进buf中,最后将buf传递给system,由其将buf中的命令取出执行。
这样就完美解决了这个问题。