当前位置: 技术问答>linux和unix
程序调用脚本,脚本启动另一个程序,如何让原始程序彻底释放资源?
来源: 互联网 发布时间:2017-02-18
本文导语: 场景: 程序A调用脚本1.sh,然后在1.sh中调用程序B 但是程序B和程序A的资源冲突,占用了同样的socket端口 “bind : Address already in use” 如何在1.sh中,让A全部释放资源? 1.sh的脚本是这样写的: #!/bin/sh killall A /...
场景:
程序A调用脚本1.sh,然后在1.sh中调用程序B
但是程序B和程序A的资源冲突,占用了同样的socket端口 “bind : Address already in use”
如何在1.sh中,让A全部释放资源?
1.sh的脚本是这样写的:
#!/bin/sh
killall A
/usr/bin/B
但是此时B提示bind不成功。
请不要想着修改A或B的程序占用不同端口之类的。A程序在现网中已经固化,而且端口已经固定,不能修改。
根本原因是因为1.sh是由A调用的
疑问:如何释放A占用的资源?
程序A调用脚本1.sh,然后在1.sh中调用程序B
但是程序B和程序A的资源冲突,占用了同样的socket端口 “bind : Address already in use”
如何在1.sh中,让A全部释放资源?
1.sh的脚本是这样写的:
#!/bin/sh
killall A
/usr/bin/B
但是此时B提示bind不成功。
请不要想着修改A或B的程序占用不同端口之类的。A程序在现网中已经固化,而且端口已经固定,不能修改。
根本原因是因为1.sh是由A调用的
疑问:如何释放A占用的资源?
|
#!/bin/sh
killall A
exec 3>&-
exec 4>&-
/usr/bin/B
试试关闭描述符3和4
需要知道socket使用的描述符是几
不够的话,继续关闭4、5、6 ..
killall A
exec 3>&-
exec 4>&-
/usr/bin/B
试试关闭描述符3和4
需要知道socket使用的描述符是几
不够的话,继续关闭4、5、6 ..