Завершить второй (параллельный) процесс, если первый завершился

Я не уверен, можно ли использовать разные определения dmix с одним и тем же ipc_key; возможно, лучше использовать общее устройство dmix.

Чтобы иметь возможность воспроизводить стереофайл на все каналы, необходимо сначала преобразовать его в моно.

pcm.dmix8 {
    type dmix
    slave {
        pcm "hw:1"
        rate 44100
        channels 8
        period_size 1024
        buffer_size 32768
    }
}

pcm.ch1 {
    type plug
    slave.pcm dmix8
    ttable.0.0 1
}
pcm.ch2 {
    type plug
    slave.pcm dmix8
    ttable.0.1 1
}
# and so on with "ttable.0.x 1"

pcm.all {
    type plug
    slave {
        pcm {
            type route
            slave.pcm dmix8
            ttable [ [ 1 1 1 1 1 1 1 1 ] ]
        }
        channels 1
    }
}
3
13.04.2017, 01:24
2 ответа

Если у вас нет какой-либо логики внутри процесса увядания для управления другим процессом при изменении статуса, вам необходимо отслеживать / контролировать их с помощью PID:

#!/bin/bash
./proc1.sh &
pid_1=$!  ## PID of proc1.sh

./proc2.sh &
pid_2=$!  ## PID of proc2.sh

while ps -p ${pid_1} &>/dev/null; do :; done ##Checking for existence of proc1.sh
kill ${pid_2}  ## Killing proc2.sh when proc1.sh is not running anymore
0
27.01.2020, 21:30

При использовании GNU Parallel это выглядит так:

parallel --halt now,fail=1 ::: script1.sh script2.sh
1
27.01.2020, 21:30

Теги

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