命令提示符程序:如何允许用户输入unix命令?

时间:2013-02-22 17:57:38

标签: c unix command prompt

我在编写显示命令提示符的C程序时遇到问题(这里没问题),允许用户输入unix命令&然后显示结果。我尝试过很多东西但是我一年前才开始编程,除了显示命令提示符之外没有去过任何地方;我需要有关如何接受unix命令+显示结果的帮助。

我唯一的限制是,我不需要提供绝对路径的用户,而是需要我的程序来搜索路径环境变量中指定的目录,并找到命令可执行文件的位置。我不明白怎么做但在线搜索告诉我最好使用“getenv()来访问OS PATH变量并为用户提供的命令加上前缀”。有人可以帮我从这里出去吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

尝试popen(),可以在联机帮助页中找到here

检查出来:

#include <stdio.h>
#include <stdlib.h>

void write_netstat(FILE * stream)
{
          FILE * outfile;
          outfile = fopen("output.txt","w");
          char line[128];

          if(!ferror(stream))
          {
                    while(fgets(line, sizeof(line), stream) != NULL)
                    {
                              fputs(line, outfile);
                              printf("%s", line);
                    }
                    fclose(outfile);
          }
          else
          {
                    fprintf(stderr, "Output to stream failed.n");
                    exit(EXIT_FAILURE);
          }
}

int main(void)
{
          FILE * output;
          output = popen("netstat", "r");

          if(!output)
          {
                    fprintf(stderr, "incorrect params or too many files.n");
                    return EXIT_FAILURE;
          }

          write_netstat(output);

          if(pclose(output) != 0)
          {
                    fprintf(stderr, "Could not run 'netstat' or other error.n");
          }
          return EXIT_SUCCESS;
}

这会将netstat打印到文件中。您可以对所有命令执行此操作。它使用popen()。我写它是因为我需要一个netstat的日志。