私はKSH(ええ、その地獄の殻)で作業する必要があります。次のようなサブルーチンであるフォークを使用する必要があります。
#!/bin/ksh
PIPE=PIPE_$$
PIPE_ERR=PIPE_ERR_$$
export TEST_FILS
$(. ./LanceFils.ksh 2>${PIPE_ERR} 1>${PIPE}) &
PID_CHILD=$!
echo "Nom du fichier PIPE: ${PIPE}"
echo "Processus fils : " $!
wait ${PID_CHILD}
echo "Code retour: " $?
echo "Sortie standard de PROC_FILS : " $(cat ${PIPE})
echo "Sortie d'erreur(s) de PROC_FILS : " $(cat ${PIPE_ERR})
echo "Contenu de TEST_FILS: ${TEST_FILS}"
rm -rf ${PIPE}
LanceFils.kshのコンテンツ
#!/bin/ksh
TIMEOUT=5
export TEST_FILS
echo "Je suis le script fils et j'attends ${TIMEOUT} secondes"
echo "Nom du pipe du pere ${PIPE}"
sleep ${TIMEOUT}
TEST_FILS="Je suis le fils"
echo "Salut c'était bien !!!"
exit 10
私はこれが機能しないことを知っています、ところで私はそれを機能させる方法を見つけようとしています...私のコードでは、子と親の間でTEST_FILS変数を共有したいことがわかります。KSHには、perlのように「共有」を使用して変数を共有する方法があります。または、Cのようにパイプを使用する必要がある場合はどうでしょうか。
ありがとうございました。