LINUX.ORG.RU

Сообщения Bokrenok

 

bash: непонятный результат после цикла while

Есть вот такой скриптик:

#!/bin/sh

INFO="info"
CPU="cpu"

top -b -d 1 -n 3 | while read line
do
    CPU=`expr match "$line" '\(^Cpu.*\)'`
  
    if [ -n "$CPU" ]; then
      echo "iteration start: '$INFO' "

      INFO=$CPU

      echo "iteration end: '$INFO' "
      echo

    fi;
                          
done
                          
echo "loop end: '$INFO' "

----------------
Запускаем:
./test.sh
iteration start: 'info'
iteration end: 'Cpu(s): 0.0%us, 47.0%sy, 10.7%ni, 42.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'

iteration start: 'Cpu(s): 0.0%us, 47.0%sy, 10.7%ni, 42.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'
iteration end: 'Cpu(s): 0.0%us, 81.7%sy, 18.3%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'

iteration start: 'Cpu(s): 0.0%us, 81.7%sy, 18.3%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'
iteration end: 'Cpu(s): 0.0%us, 81.7%sy, 18.3%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st'

loop end: 'info'
----------------

Вопросы:
- почему после завершения while переменная INFO не изменила своего значения?
- как получить новое значение переменной INFO после завершения while ?

Bokrenok
()

[C] pthread_create и PID

Всем привет!

Вопрос по PID для процесса, созданного через pthread_create.

Ситуация такая:
- есть 2 девайса на основе процессора PPC440GRx
- на каждом девайсе крутится немного разная сборка Linux'a 2.6.21-rc4. (точных различий в сборках к сожалению не знаю)

И вот заметил я недавно странную вещь:
при запуске проги на одном из девайсов каждый процесс, созданный посредством pthread_create получает собственный PID,
а на другом девайсе при запуске той же проги процессы имеют один единственный PID на всех.

Значение PID вытаскиваю с помощью getpid().

Собсно вопрос: каким образом регулируется назначение PID'ов процессам? Что сделать, чтобы на обеих сборках linux'а каждому процессу назначался уникальный PID?

 

Bokrenok
()

RSS подписка на новые темы