#include #include #include #include #include #include #define MSGSIZE 64 char *SB = {"|||||||||| "}; int main() { 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]); // A не читает 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 != 10; i++){ if (B[i] > Bm_pre[i]) Bm_pre[i] = B[i]; } printf("B0 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[0]/10*-1), B[0], Bm[0]); //B0 printf("B1 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[1]/10*-1), B[1], Bm[1]); //B1 printf("B2 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[2]/10*-1), B[2], Bm[2]); //B2 printf("B3 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[3]/10*-1), B[3], Bm[3]); //B3 printf("B4 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[4]/10*-1), B[4], Bm[4]); //B4 printf("B5 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[5]/10*-1), B[5], Bm[5]); //B5 printf("B6 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[6]/10*-1), B[6], Bm[6]); //B6 printf("B7 [%.*s] OUT: %3d PK: %3d\n", 10, SB + 10 + (B[7]/10*-1), B[7], Bm[7]); //B7 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; }