【发布时间】:2013-03-01 06:08:46
【问题描述】:
我必须与 KSH 合作(是的,那个地狱壳)。 我需要使用一个fork,一个子程序如下:
#!/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 中使用“share”或者我必须使用 C 中的管道?
谢谢。
【问题讨论】:
-
这一切都取决于我们所说的 ksh 以及它的陈旧程度。如果它是围绕数据结构的现代管道是蛋糕。否则,您可能应该寻找替代子外壳的替代方法。看看 ksh 协进程。
标签: variables fork ksh subroutine