Unix父进程fork之后子进程是否继承父进程的定时任务和占有端口?

Torreson 2018-02-21 12:48:52
子进程将继承父进程调用fork()之前的所有系统资源,当然包括代码段。
但是,父子进程的地址空间一开始是共享的。只有当父子进程中的任何一个企图修改其中的内容时才进行复制,这就是copy on write。ref:https://zhidao.baidu.com/question/295061482.html

问题:
执行fork之后,
1.子进程会继承父进程的定时任务吗?
2.子进程会占有父进程本来占有的端口(如父进程原来用于监听外部请求的端口)吗?

ps:
问题起因:看了这片文章(http://blog.csdn.net/vernonzheng/article/details/8644936)最后的分析
:“因此我分析,问题的原因可能是这样的,虽然Linux早已在fork()中采用copy-on-write机制,但是JVM调

用fork()后,Java进程里的其它线程往往会被调度回来继续执行,修改了自己的内存,而这个时候

execvp()还没有执行,于是悲剧就发生了,内存都要重新复制一遍。“
...全文
693 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckc 2018-02-22
  • 打赏
  • 举报
回复
别的线程不会继承的
Torreson 2018-02-21
  • 打赏
  • 举报
回复
Use posix_spawn, not fork, on S10 to avoid swap exhaustion
Torreson 2018-02-21
  • 打赏
  • 举报
回复
此bug是由于在JDK1.6以前版本,Runtime.exec调用外部程序时使用fork()方式,需要分配和当前Java主进程同等大小的内存空间,也就是说将当前占用内存加倍。因此当Java程序占用内存超过50%时执行Runtime.exec永远不能成功。 解决方法: 1、新起一个Java进程,通过socket与主进程通信。这样运行Runtime.exec时只会将新进程内存加倍。 2、坐等JDK1.7发布。该bug在JDK1.7中被Fix。 ref:迟一刀 : http://bbs.csdn.net/topics/370027519
Torreson 2018-02-21
  • 打赏
  • 举报
回复
引用 1 楼 ckc 的回复:
子进程也会监听父进程打开的端口 不过定时任务是啥?
1.子进程也会监听父进程打开的端口?就是外部请求会被子进程和父进程两者接收和处理?子进程接收到请求会像父进程原本的逻辑一样处理? 2.定时任务是指父进程原本起了一个线程在不停的运行,比如该线程每sleep了3秒之后执行一个任务,相当于一个定时任务。那么子进程会继承父进程的正在运行的线程吗?
ckc 2018-02-21
  • 打赏
  • 举报
回复
子进程也会监听父进程打开的端口 不过定时任务是啥?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧