Проблема вызвана использованием тильды в сочетании с кавычками. См., например, эту расшифровку из моей системы:
-0-1- ~ > x="~/tmp"
-0-1- ~ > cd $x
cd: no such file or directory: ~/tmp
-1-1- ~ > y="$HOME/tmp"
-0-1- ~ > cd $y
-0-1- ~/tmp > cd..
-0-1- ~ > z=~/tmp
-0-1- ~ > cd $z
-0-1- ~/tmp >
Ваша тильда не будет развернута, так как она заключена в кавычки.
У процесса может быть много потомков. Лучший способ получить дочерний PID — это получить его при создании дочернего элемента. И fork
, и clone
возвращают дочерний PID в случае успеха.