當前位置:商標查詢大全網 - 彩票查詢 - 在linux中,A進程調用系統執行shell,啟動B進程,然後殺死A進程。此時,當A進程再次啟動時,錯誤端口被占用。

在linux中,A進程調用系統執行shell,啟動B進程,然後殺死A進程。此時,當A進程再次啟動時,錯誤端口被占用。

當進程A使用系統調用執行壹個命令時,它會生成壹個子進程C來執行它。當進程Bkill進程A啟動時,進程A打開的文件描述符會被子進程繼承,所以原本被A占用的端口(實際上是文件描述符)被子進程C占用..

正確的方法應該是先停止子進程C,然後讓進程A退出。或者在進程A的代碼中,使用unix編程接口,不要讓子進程繼承文件描述符(這個比較復雜,需要自己看unix編程的書)。