我在编写显示命令提示符的C程序时遇到问题(这里没问题),允许用户输入unix命令&然后显示结果。我尝试过很多东西但是我一年前才开始编程,除了显示命令提示符之外没有去过任何地方;我需要有关如何接受unix命令+显示结果的帮助。
我唯一的限制是,我不需要提供绝对路径的用户,而是需要我的程序来搜索路径环境变量中指定的目录,并找到命令可执行文件的位置。我不明白怎么做但在线搜索告诉我最好使用“getenv()来访问OS PATH变量并为用户提供的命令加上前缀”。有人可以帮我从这里出去吗?感谢您的帮助。
答案 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的日志。