Linux学习笔记之print process

本文介绍了如何使用C++语言在Linux环境下实现类似Windows进度条的动态打印过程效果,通过代码示例详细展示了实现过程,并提供了一个简单的Makfile用于生成可执行文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近突然想在linux 打印process,就像Windows进度条。就查了查资料,才发现原来我们的printf 有这么厉害的功能。下面我们看下代码:

#include <stdio.h>
#include <string.h>
#include <sys/wait.h>
#include <unistd.h>

int main(void) { 
    char str[102];
    int i = 0, rate = 0;
    unsigned int total = 100;
    memset(str, 0, 102 * sizeof(char));
    const char *ptr = "|/-\\";

    while (rate <= 100) {
        str[rate] = '=';
        printf("\033[?251\033[40;32m[%-100s]\033[;33m[%d\%]\033[;37m[%c]\r",
        str, ((rate * 100) / total), ptr[rate % 4]);
        usleep(100000);
        fflush(stdout); /* very important */
        rate ++;
    }
    return 0;
}

这里要注意的是, “fflush(stdout); “, 看到flush 和 sdout,大家就算不知道实现原理,应该也是可以猜到其中的含义了。

代码功能总体是比较简单的,最好的学习方法就是,自己修改其中的一些变量值,看下跑起来的效果就会有比较深的理解了。

Maekfile

为了使我们编写的小程序可以顺利执行,需要生成一个binary。这个时候就需要我们自己写一个简单的Makfile了。Makefile用的都是简单的语法,就不详细解释了:

Proc:Proc.o 
    gcc Proc.o -o Proc
Proc.o:Proc.s
    gcc -c Proc.s -o Proc.o 
Proc.s:Proc.i 
    gcc -S Proc.i -o Proc.s 
Proc.i:dispro.c 
    gcc -E dispro.c -o Proc.i 
.PHONY:clean
clean:
    rm -rf Proc.i Proc.s Proc.o Proc 

当然也可以用更加简单的做法:gcc -o Proc dispro.c

原始文章: http://blog.youkuaiyun.com/yuehailin/article/details/53999288
如果大家对颜色比较感兴趣,可以参考https://www.cnblogs.com/lienhua34/p/5018119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值