【发布时间】:2016-04-13 13:19:08
【问题描述】:
我的作业要求我封装流程处理的原理。
这是我的Process 课程包含的内容:
class Process
{
public:
Process();
~Process();
pid_t getPid() const;
private:
pid_t pid_;
};
构造函数:
Process::Process()
{
this->pid_ = fork();
}
析构函数:
Process::~Process()
{
if (this->pid_ > 0)
kill(this->pid_, SIGKILL);
}
问题来了:在封装和创建这样的对象之后:
void example()
{
Process pro;
if (pro.pid_ == 0)
{
// Child Process
}
else if (pro.pid_ < 0)
{
// Error
}
else
{
// Parent Process
}
}
我的程序几乎从不进入子代码,但是当我 fork() 正常时(没有封装)它就像一个魅力。
我哪里做错了?
【问题讨论】: