Chcę przesłać niektóre dane do procesu root z nazwaną potokiem. Oto skrypt i działa świetnie:Skrypt Bash z nieblokującym odczytem
#!/bin/sh
pipe=/tmp/ntp
if [[ ! -p $pipe ]]; then
mknod -m 666 $pipe p
fi
while true
do
if read line <$pipe; then
/root/netman/extra/bin/ntpclient -s -h $line > $pipe 2>&1
fi
done
Tak naprawdę mam kilka takich skryptów. Chciałbym zamknąć je wszystkie w jednym skrypcie. Problem polega na tym, że wykonanie blokuje pierwszy "odczyt" i nie mogę wykonać wielu "odczytów" w jednym procesie. Czy nie mogę nic zrobić? Czy możliwe jest odczytanie "nieblokującego" basha?
Dlaczego chcesz połączyć oddzielne operacje w jedną całość? scenariusz? Jeśli każdy z nich działa poprawnie, pozostań niezależny. Jest to znacznie łatwiejsze niż próba naginania powłoki w nie blokujące czytania. Procesy są tanie. Proste procesy są również bezpieczniejsze niż złożone, a procesy root muszą być bezpieczne. –
Zgodziłbym się z tobą, ale każdy proces zjada 628K pamięci RAM (jest to kopia basha) i jestem w środowisku osadzonym. Wolałbym zaoszczędzić jak najwięcej pamięci. – michelemarcon
Jeśli to taki problem, napisz kod w C. –