首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cocoa程序无法停止

Cocoa程序无法停止
EN

Stack Overflow用户
提问于 2012-12-12 09:16:35
回答 1查看 72关注 0票数 0

我正在尝试编写一个使用串口的OS X应用程序。我找到了一个示例(cocoa),并在Xcode4中运行了它。在第一次运行时,它打开了端口,我可以与硬件交换数据。

如果我试图改变端口,程序就会变得异常。风车启动,UI无响应。我不能从Xcode中停止程序,也不能从终端中终止它,或者强制退出。强制退出Xcode不能做到这一点。尽管PID从终端上消失了,但UI仍然存在于愉快旋转的风车上。

唯一的出路就是重新启动。欢迎任何关于如何追踪错误代码的想法。我是Cocoa/Objective C的新手,所以简单的术语更好。

EN

回答 1

Stack Overflow用户

发布于 2012-12-12 10:54:49

很有可能它变成了僵尸。它应该在ps auxww (或类似的)中显示,其状态中应该有一个'Z‘。活动监视器也可能仍然显示它。

这在使用硬件时比较常见,例如串行端口。僵尸可能出于两个原因之一出现,在这种情况下最有可能是第一个原因:

等待等待进程在某种类型的内核调用中被阻塞,即interruptible.

  • The进程已退出但其父进程尚未确认(通过()或类似方法)。

在第一种情况下,这通常是一个基本的bug或某种设计缺陷,您可能没有任何好的选择,除非准确地找出是什么代码路径引起的问题,并避免这种情况。

在第二种情况下,解决方案通常很简单-找到僵尸的父进程并杀死它。根据需要重复上述步骤,直到您的僵尸被某个父进程采用,该父进程会调用wait()来获取僵尸(如果没有其他事情,launchd将执行此操作)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13831247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档