Chinaunix

标题: 有什么好的方法吗 [打印本页]

作者: sx_boss    时间: 2007-06-11 17:56
标题: 有什么好的方法吗
大家有什么好的方法把system的输出(而不是返回值)保存到一个变量中呢?
作者: langue    时间: 2007-06-11 18:02
  1. system("ls / > /tmp/output");
复制代码

请注意,在 C 语言的上下文中讨论 “system() 的输出” 是没有意义的,system() 执行的是一组命令。更确切地说,system() 唯一的参数将被送往命令解释器 sh(1)
作者: sx_boss    时间: 2007-06-11 18:09
其实我的目的是想测试某个目录下有没有特定的文件。
例如:检查/home/test 目录下有没有 *.tmp文件。
有什么简单的方法来检查吗。

如果把这个目录下的所有文件都一一取出来,再过滤的话比较麻烦。

看看版主有什么高见。

谢谢啊
作者: langue    时间: 2007-06-11 18:11
用 stat() 可以检查文件的存在性
如果有通配符,则应当对通配符进行解析。用 opendir() 打开所在目录,循环 readdir() 一次,看是否有匹配的目录项即可(此处需要解析通配符)。

[ 本帖最后由 langue 于 2007-6-11 18:19 编辑 ]
作者: langue    时间: 2007-06-11 18:16
有兴趣可以试试用 glob() 生成一份适合通配符的路径名列表。

[ 本帖最后由 langue 于 2007-6-11 18:19 编辑 ]
作者: langue    时间: 2007-06-11 18:19
注:需要对 “统配符” 进行修正。Wildcard character 正式的中文译名是 “通配符”
作者: MMMIX    时间: 2007-06-11 18:27
原帖由 sx_boss 于 2007-6-11 17:56 发表
大家有什么好的方法把system的输出(而不是返回值)保存到一个变量中呢?

怎么对 system(3) 这么情有独钟?popen(3) 不好使么?
作者: langue    时间: 2007-06-11 18:31
原帖由 MMMIX 于 2007-6-11 18:27 发表

怎么对 system(3) 这么情有独钟?popen(3) 不好使么?


请别怀疑,很多人刚开始学的时候极有可能这样想。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2