Процесс в конвейере, который обрабатывает 256 байт за раз

Этот код perl работает для меня :например, findTab.pl Chrome Gmail. Это заставляет экран переворачиваться и может менять вкладки в других окнах (он проверяет 12 раз на теории, что это должно оставить ваше окно на исходной вкладке, если оно ничего не находит, если у вас есть <5 вкладок в окне ).

Это не работает в моей системе Ubuntu, если вы не используете windowactivateдо key; что-то связанное с очень старыми протоколами безопасности.

Я не думаю, что есть какие-либо гарантии, что он найдет, если нужно найти более одной вещи; Я подозреваю, основываясь на другом опыте xdotool, что при многократном использовании он может найти разные вещи.

Perl, вероятно, не лучший выбор для этого скрипта, но я не знаю bash.

#! /usr/bin/perl
## findTab.pl
## usage findTab appName tabName
use strict;

my $maxTabs=12;

my ($app, $tab) = @ARGV;

my @wins = split /\s+/, `xdotool search --desktop 0 --name $app`;

foreach my $win (@wins){
    my $title;
    for (my $i=0;$i<$maxTabs;$i++){
        system ("xdotool windowactivate $win");
        $title = `xwininfo -id $win | grep $tab`;
        last if $title;
        system("xdotool key --window $win ctrl+Page_Down");
    }
    last if $title;
}
2
25.06.2020, 14:23
2 ответа

Примерно так:

for i in {0..N} 
do
    dd if=input_s16le_audio.pcm bs=256 count=1 skip=$i | ./fpga_fft
done

Очевидно, вам нужно заменить цикл for чем-то, что останавливается после обработки всего файла (когда значение пропуска слишком велико, dd просто отправляет 0 байтов, так что вы не можете рассчитывать на плохой rc ).

Теперь, если у вас есть программа на C, должно быть сложно изменить ее, чтобы она зацикливалась на входном файле?

1
28.04.2021, 23:12

Использование GNU Parallel:

cat input_s16le_audio.pcm |
  parallel --pipe --recend '' --block 256./fpga_fft

Если несколько fpga_fftне могут работать параллельно, добавьте-j0

1
28.04.2021, 23:12

Теги

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