使用 popen 函数在 Linux C 中执行命令并获取输出结果

在 Linux C 编程中,可以使用 popen 函数来执行 Linux 命令,并获取命令的输出结果。popen 函数提供了一种简单而高效的方式与系统命令交互,可以用于各种场景,例如获取系统信息、执行脚本等。

popen 函数详解

popen 函数的原型如下:

FILE *popen(const char *command, const char *type);
  • command: 要执行的 Linux 命令字符串。
  • type: 打开文件的方式,类似于 fopen 函数。
    • 'r': 以只读方式打开,用于读取命令的输出结果。
    • 'w': 以只写方式打开,用于向命令传递输入数据。

popen 函数返回一个指向 FILE 结构体的指针,可以像读写文件一样使用它来读取命令的输出结果或向命令传递输入数据。

示例代码

以下示例代码演示如何使用 popen 函数获取 ls / 命令的输出结果:

#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[1024];

    fp = popen('ls /', 'r');
    if (fp == NULL) {
        printf('Failed to run command\n');
        return 1;
    }

    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf('%s', buffer);
    }

    pclose(fp);

    return 0;
}

命令输出重定向

在执行命令时,可以将命令的输出重定向到一个文件,然后再读取文件来获取命令输出结果。例如,以下代码将 ls / 命令的输出重定向到 output.txt 文件,然后读取该文件内容:

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

int main() {
    FILE *fp;
    char buffer[1024];

    // 执行命令并重定向输出到文件
    if (system('ls / > output.txt') != 0) {
        printf('Failed to run command\n');
        return 1;
    }

    // 打开文件并读取内容
    fp = fopen('output.txt', 'r');
    if (fp == NULL) {
        printf('Failed to open output file\n');
        return 1;
    }

    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf('%s', buffer);
    }

    fclose(fp);

    // 删除临时文件
    remove('output.txt');

    return 0;
}

总结

popen 函数为 Linux C 编程提供了一种便捷的方式来执行系统命令并获取其输出结果,可以广泛应用于各种场景。通过本文的介绍,您应该已经掌握了 popen 函数的使用方法,并能够将其应用于您的实际项目中。

Linux C 获取命令输出结果 - popen函数详解及示例

原文地址: https://www.cveoy.top/t/topic/nu8T 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录