找回密码
 注册
查看: 636|回复: 5

问个关于fork的小问题

[复制链接]
发表于 2004-6-23 11:44:14 | 显示全部楼层 |阅读模式
我在程序中定义了一个类,在构造/析构函数中添加了一些日志信息,但是在fork之前定义的对象将打印两次析构信息,我只想在父进程中打印一次该怎么办?
发表于 2004-6-23 13:52:23 | 显示全部楼层
是否可以增加一个进程状态描述标志,在析构中判断在哪个进程中?
回复

使用道具 举报

 楼主| 发表于 2004-6-23 17:51:09 | 显示全部楼层
呵呵,那不是额外的负担吗?而且好像也没有办法判断到底是父进程还是子进程
回复

使用道具 举报

发表于 2004-6-23 21:08:44 | 显示全部楼层
在fork之前自然只是父进程自己,析构只打印一次信息可以用类似于锁的办法实现。
回复

使用道具 举报

 楼主| 发表于 2004-6-29 20:42:41 | 显示全部楼层
to lanche:不解,愿闻其详
回复

使用道具 举报

发表于 2004-6-29 21:22:21 | 显示全部楼层
fork虽然拷贝出了一个子进程,但执行点是从fork()后面的语句开始,构造函数在fork()之前,析构函数在fork()之后执行,所以会被执行两次.你可以给类添加一个成员变量pid_t p_pid;然后在fork()之前做p_pid=getpid(),这是父进程的pid,然后在析构函数里再getpid(),比较得到的pid和p_pid,如果一样就是父进程,如果不一样就是子进程.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-15 22:07 , Processed in 0.037101 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表