gpt4 book ai didi

c - 如何捕获特定linux系统的返回

转载 作者:行者123 更新时间:2023-11-30 18:00:09 25 4
gpt4 key购买 nike

我最近开始使用linux,所以对它了解甚少。至少我知道linux中的一切都是文件。

我想知道如何捕获特定的linux系统返回,例如如果我选择安装ruby(sudo apt-get -y install ruby​​),我如何知道它安装成功?

char buffer[1024];
char *buf = malloc(4096);

char *pl;
FILE *fp;

if (strcmp(cmd, "ruby") == 0)
{
fp = popen("sudo apt-get -y install ruby", "r");
}

if (fp == NULL)
{
printf("Failed to load file\n");
exit(0);
}

while ((pl = fgets(buffer, sizeof(buffer), fp)) != NULL)
{
strcat(buf, buffer);
}

strcat(buf, "\n");

pclose(fp);

然后我使用 popen 来读取打开的文件,但它包含与终端中显示的相同的内容,我只想要一个“标志”,例如 OK 或 FAIL。

抱歉我的英语不好。

最佳答案

apt-get 的退出代码会告诉您是否成功(0 表示成功)。 pclose(fp) 将返回退出代码,因此您可以执行以下操作:

if (pclose(fp) == 0) {
// success
} else {
// failure
}

不过,您可能会注意到,现在我们实际上并没有从管道中读取数据。确实没有任何理由拥有它。因此,就像 Joachim 建议的那样,system() 函数可能更适合您的情况。

关于c - 如何捕获特定linux系统的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10755157/

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