Я знаю, что могу использовать команду объема плазмы для показа прогресса команды. например:
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. Есть ли существует какой-либо способ сделать это??
Как я упомянул в своем комментарии, базовая проблема то, что Ваш 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);
может быть достаточным