LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2501|回复: 10

有没有好的方法 将 system(shell命令) 输出结果赋值给c语言中的某个变量呢?

[复制链接]
发表于 2006-2-2 21:24:48 | 显示全部楼层 |阅读模式
rt
有没有好的方法 将 system(shell命令) 输出结果赋值给c语言中的某个变量呢?
发表于 2006-2-2 23:00:35 | 显示全部楼层
用管道:  shellcommand | cprogram

shell 的输出就会传给 c 程序,在 c 程序中将 argv[] 参数过滤后传给变量。

我不是专业程序员,不知道这是不是一个好办法。如果说的不对,尽管拍。
回复 支持 反对

使用道具 举报

发表于 2006-2-3 01:00:07 | 显示全部楼层
如果你想用的 shellcommand 程序不大,就自己
写一个吧。直接调用就好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-3 10:23:06 | 显示全部楼层
怎么 直接调用?  详细点 谢谢
回复 支持 反对

使用道具 举报

发表于 2006-2-3 12:42:06 | 显示全部楼层
第一种方法: system命令输出到文件,然后主程序读取文件。

第二种方法: 使用有名管道。可以接合以下两篇文章:
http://opensource.nchc.org.tw/in ... re/ext2fs-pipe.html
http://www-128.ibm.com/developer ... pc/part1/index.html
1.主程序建立有名管道,
2.system输出到此管道(异步执行)
3.主程序读取管道,
4. 主程序销毁有名管道。
其中可能涉及到IO堵塞,时序,同步、异步等问题,我没有仔细考虑过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-3 15:38:32 | 显示全部楼层
第一种放有 偶用类似的实现了。。不过效果不佳。 容易都到”乱码“ 用另写的函数去掉了。。
第二种有点麻烦 正在研究。。
看来 写个 读取不规则的配置文件的程序 有点麻烦。。
回复 支持 反对

使用道具 举报

发表于 2006-2-3 22:46:50 | 显示全部楼层
就是自己重写个函数啊。
直接调用就成了。
一般的程序都是有代码可看的啊。
回复 支持 反对

使用道具 举报

发表于 2006-2-4 10:09:31 | 显示全部楼层
用环境变量.
例如:

export MY_DATE=`date`

在c中:

#include <stdio.h>

int  main(){
  
  char* date=getenv("MY_DATE");
  
  printf("MY_DATE=%s",date);

  return 0;
}

*千万别把简单问题复杂化了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-4 17:09:19 | 显示全部楼层
daniel_zhy 方法 简单   谢谢
getenv()  偶记住了
回复 支持 反对

使用道具 举报

发表于 2006-2-5 09:53:10 | 显示全部楼层
please man popen
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表