/* 
	runcmd - a program for running command prompt commands
	Copyright (C) 2010 Miroslav Stampar
	email: miroslav.stampar@gmail.com

	This library is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License as published by the Free Software Foundation; either
	version 2.1 of the License, or (at your option) any later version.
	
	This library is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.
	
	You should have received a copy of the GNU Lesser General Public
	License along with this library; if not, write to the Free Software
	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/

#include <stdio.h>
#include <windows.h>
#include <use_ansi.h>
#include "stdafx.h"
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
  FILE *fp; 
  string cmd; 

  // 从命令行参数获取命令并构建完整的命令字符串
  for (int count = 1; count < argc; count++)
    cmd += " " + string(argv[count]); // 将每个参数添加到 cmd 字符串中，并用空格分隔

  // 使用 _popen() 函数以只读的方式打开一个命令进程
  fp = _popen(cmd.c_str(), "r");

  // 检查文件指针是否有效
  if (fp != NULL) {
    char buffer[BUFSIZ]; // 声明一个缓冲区用于接收输出

    // 读取命令的输出并将其写到标准输出
    while (fgets(buffer, sizeof buffer, fp) != NULL)
      fputs(buffer, stdout); // 将缓冲区的内容输出到控制台
  }

  return 0;
}