windows下的tee
分类: 代码, 笔记 | 标签: | 日期:2009-10-26 | 1 views
在Linux和Unix,我们可以通过管道操作符|来将应用程序的输出同时显示在屏幕和写入到文件中。最近在windows下使用cygwin版本的lammps的时候却遇到问题,我需要得到lammps的输出,是在文件中而不是在cmd窗口里,这样我就能够根据文件中的数据画出势能和动能以及其他一些折线图。
在*nix下我们使用这样的命令
./somecommand < inputfile | tee outputfile
在windows下,会提示找不到tee这个文件,因为它是属于linux和unix的。谷歌了一下,发现分子模拟论坛上有好人提供了一个简单的tee源代码,编译之后能够实现windows下tee的功能。试用了一下感觉非常好,代码如下:
# include <stdlib.h>
# include <stdio.h>int main (int argc, char *argv[])
{
FILE **outfile;
int c, i;
int value = 0;
outfile = (FILE **) malloc (argc * sizeof (FILE *));
outfile [0] = stdout;
for (i = 1; i < argc; ++i)
{
if ((outfile [i] = fopen (argv [i], “wb”)) == NULL) {
fprintf (stderr, “%s: “, argv [0]);
perror (argv [i]);
value = 1;
}
}
while ((c = getchar ()) != EOF)
{
for (i = 0; i < argc; ++i)
{
if (outfile [i] != NULL) {
if (fputc (c, outfile [i]) == EOF) value = 1;
}
}
}
for (i = 0; i < argc; ++i)
{
fclose (outfile [i]);
}
return value;
}
将源代码编译之后放到windows目录或是system32下即可随时调用了。或者如果你懒得编译,直接下载吧。

