【问题标题】:How to capture process output in C?如何在C中捕获进程输出?
【发布时间】:2011-05-18 11:16:29
【问题描述】:

C 语言中有没有类似 PHP 的系统?

man system 说,system 返回命令的状态,但我需要输出(就像在 PHP 中一样)。

当然,我可以使用管道,但是有什么标准方法吗?

【问题讨论】:

  • 我想你想要 popen('command goes here')。在 popen 上阅读您的手册页

标签: c linux unix system posix


【解决方案1】:

您可以将popen及相关功能用作:

// command to be run.
char *cmd = "date"; 

// open pipe stream.
FILE *fp = popen(cmd,"r");
int ch; 

// error checking.
if(!fp) {
        fprintf(stderr,"Error popen with %s\n",cmd);
        exit(1);
}   

// read from the process and print.
while((ch = fgetc(fp)) != EOF) {
        putchar(ch);
}

// close the stream.
pclose(fp);

Ideone link

【讨论】:

    【解决方案2】:

    如果你需要命令的输出,你可以在 Unix 上使用popen()(用“r”表示你想从命令中读取)。

    FILE *fp = popen("some -convoluted command", "r");
    ...check for validity...
    ...read data from command...
    pclose(fp);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多