电子产业一站式赋能平台

PCB联盟网

搜索
查看: 39|回复: 0
收起左侧

Linux下如何在程序中获取某个命令执行的结果?【附源码】

[复制链接]

473

主题

473

帖子

5190

积分

四级会员

Rank: 4

积分
5190
发表于 2024-6-25 11:40:00 | 显示全部楼层 |阅读模式
点击左上方蓝色“一口Linux”,选择“设为星标
第一时间看干货文章
?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式知识点-思维导图-免费获取?【就业】一个可以写到简历的基于Linux物联网综合项目?【就业】找工作简历模版

3ifz4dqsfar64025253538.gif

3ifz4dqsfar64025253538.gif

在工作中遇到一个问题,就是想获取某个函数执行之后打印的字符串信息
这个功能应用场景挺多的,
特地整理了一下相关知识点分享给大家。
1. 使用临时文件 1) 使用shell的重定向将命令输出重定向到一个临时文件,在我们的应用程序中读取这个临时文件,获得外部命令执行结果,代码如下所示:
/*************************公众号:一口Linux*********************************
** Name:popen.c
** Author:yikoupeng
** Date:2024/6/26
** All rights 一口linux reserved!
*************************************************************************/
#include
#define MAX_STR_LEN 1024
int mysystem(char* cmdstring, char* tmpfile)
{
char cmd_string[MAX_STR_LEN];
mkstemp(tmpfile);                           
sprintf(cmd_string, "%s > %s", cmdstring, tmpfile);
return system(cmd_string);
}
int main()
{
     int len;

     len = mysystem("ls -l","yikou.txt");
     printf("len=%d
",len);

     return 0;
}
程序执行结果:
2) freopen标准输出到文件/*************************公众号:一口Linux*********************************
** Name:popen.c
** Author:yikoupeng
** Date:2024/6/26
** All rights 一口linux reserved!
*************************************************************************/
#include

int main()
{
    if(freopen("file.txt","w",stdout)==NULL)
        fprintf(stderr,"error
");
    system("ls -ahl");
    printf("This is in the file
");      //该行信息会保存在file.txt中
    fclose(stdout);               
    return 0;
}
执行结果:
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表