C中的鞭尾计

时间:2014-12-06 19:25:16

标签: c linux bash whiptail

这是一个简单的bash代码,用于在终端中显示仪表:

#!/bin/bash
{
for ((i = 0 ; i <= 100 ; i+=5)); do
    sleep 0.1
    echo $i
done
} | whiptail --gauge "Please wait while we are sleeping..." 6 50 0
# you can replace 'whiptail' with 'dialog', it will work.

我想在C中重现同样的事情。所以我这样做:

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

// set DIALOG to "dialog" or "whiptail"
#define DIALOG "whiptail"

int main()
{
    FILE* pipe;
    if( (pipe = popen(DIALOG " --gauge 'Loading...' 6 50 0","w") )!=NULL)
    {
        int i;
        for (i=1; i<=100; i++)
        {
            usleep(0.1);
            fprintf(pipe, "%d\n",i);
            fflush(pipe);
        }
        pclose(pipe);
    }
    return 0;
}

但它只适用于“对话框”,我无法使用“whiptail”:(

任何帮助??

解决方案 正如Brad S.解释的那样,如果太快了......改成usleep(100000)就可以了。

1 个答案:

答案 0 :(得分:0)

如果我睡了一段更合理的时间,它对我有用....尝试:usleep(100000);