Как использовать команду объема плазмы для исполняемого файла?

Я знаю, что могу использовать команду объема плазмы для показа прогресса команды. например:

for i in {1..200}; do sleep 0.1; echo "$i"; done | pv -ls 200 > output.txt

Но когда у меня есть файл main.c, которые имеют следующий код:

FILE * file;
file = fopen("output.txt", "a");
for(int i=0; i<200; i++){
    fprint(file, "%d\n", i+1);
}
fclose(file);

и когда я выполняю этот файл, у меня есть a.out исполняемый файл. Так, теперь я хочу использовать команду объема плазмы для показа прогресса команды./a.out. Есть ли существует какой-либо способ сделать это??

-1
задан 12 July 2017 в 23:24

1 ответ

Как я упомянул в своем комментарии, базовая проблема то, что Ваш a.out записи в файл, не в stdin поток, что означает pv не может получить данные. Когда Ваши выходные данные программы к stdin поток, затем это работает:

$ ./a.out | pv -ls 200 > /dev/null                                 
 201  0:00:00 [2.09M/s] [========================>] 100%            

$ cat main.c
#include<stdio.h>

int main(){
    int i=0;
    for(i;i<=200;i++)
        fprintf(stdout,"%d\n",i);
    return 0;
}

Между прочим, Вы не должны использовать fprintf() записать в stdout, простое printf("%d\n",i); может быть достаточным

1
ответ дан 2 November 2019 в 22:38

Другие вопросы по тегам:

Похожие вопросы: