这是我的代码的简化版本:
- (IBAction)convert:(id)sender
{
/* these two lines are ignored */
[textbox setStringValue:@"converting"];
[convertButton setEnabled:NO];
pid_t pid;
if((pid=fork())==-1)
{
[log setStringValue:@"couldn't fork a new process."];
converting = 0;
[convertButton setEnabled:YES];
return;
}else if (pid==0)
{
//this is the child
sleep(2);
exit(0);
}else{
int status;
waitpid(pid,&status,0);
}
}
}
这是一个非常基本的 fork() 调用。问题是,最顶部的两行(标有注释)被忽略了......它们似乎直到分叉子退出后才执行。为什么?
编辑:我能做些什么来解决它?