gpt4 book ai didi

c - 获取 system() 函数的控制台输出的另一种方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:18 31 4
gpt4 key购买 nike

在控制台中执行以下代码时:

int ret = system("iptables -t filter -L");

ret 将获得值 1 并且控制台中将显示一个规则列表。问题是我还想在我的程序中获取规则列表。我正在使用以下解决方案执行此操作:

int ret = system("iptables -t filter -L >> filter-table.txt");
/* read filter-table.txt file to get the list */

还有其他方法可以获取列表吗?

最佳答案

如@Charles Duffy 和@Kevin 所述,system()不是你想要的功能。 popen()比较合适。以下应该工作。请注意,如果您使用 gcc并用 -std=c99 编译标志,你需要添加 #define _POSIX_C_SOURCE 2之前#include <stdio.h>

#include <stdio.h>
#include <error.h>

#define PATH_MAX 1024

int main(void)
{
FILE *fp;
int status;
char path[PATH_MAX];

fp = popen("iptables -t filter -L", "r");
if (fp == NULL)
{
perror("popen");
return -1;
}

while (fgets(path, PATH_MAX, fp) != NULL)
{
printf("%s", path);
/* do something you want with the return data */
}


status = pclose(fp);
if (status == -1)
{
perror("pclose");
}
return 0;
}

关于c - 获取 system() 函数的控制台输出的另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369899/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com