#include #include #include #include #include #include #define MSGSIZE 64 int x = 20; int main() { char *SB = malloc(x*2); for(int i = 0; i != x*2; i++){ if (i < x) SB[i] = '|'; else SB[i] = ' '; } int B[8]; int Bm[8] = {0}; int Bm_pre[8] = {0}; int ret; int p[2], i; pipe(p); pid_t a = fork(); char *sas[] = {"cava", "-p", "/home/romenskiy2012/.config/cava/band8.conf", NULL}; char inbuf[MSGSIZE]; if (a == 0) { if (dup2(p[1], STDOUT_FILENO) == -1) { perror("dup2"); _exit(127);} close(p[0]); close(p[1]); execvp(sas[0], sas); _exit(127); } close(p[1]); FILE *r = fdopen(p[0], "r"); for (int i = 0;1 == 1;i++){ fgets(inbuf, sizeof inbuf, r); ret = sscanf(inbuf, "%i %i %i %i %i %i %i %i", &B[0], &B[1], &B[2], &B[3], &B[4], &B[5], &B[6], &B[7]); for (int i = 0; i != 8; i++){ if (B[i] > Bm_pre[i]) Bm_pre[i] = B[i]; } for (int i = 0; i != 8; i++){ printf("B%i [%.*s] OUT: %3d PK: %3d\n", i, x, SB + x + (B[i]*x/100*-1), B[i], Bm[i]); } printf("\033[2J\033[H"); if (i >= 10){ memcpy(Bm, Bm_pre, sizeof Bm_pre); memset(Bm_pre, 0, sizeof Bm_pre); i = 0; } } return 0; }