2012-08-24 112 views
1

在OSX上使用objective-c如何区分用户应用程序(即Safari)和系统进程的PID? (即启动)如何区分系统过程PID和用户过程PID?

我基本上需要能够接受一个PID作为输入,并显示它是一个用户应用程序还是一个系统进程作为输出。

回答

1

PID不是用来区分“用户”和“系统”进程的。区分因素是谁(哪个用户帐户)启动它以及启动它的方式/位置/时间。在Linux上(其他类Unix操作系统,包括OSX,没有太大差别),在“root”帐户下运行的东西或一定数量的其他特殊用途帐户可以松散地被认为是“系统”进程,而由与实际的人类用户相对应的账户将被视为“用户”过程,但是线路非常模糊。这可能不像你可能认为的那样有用......分类

+0

如果打开活动监视器,您会发现某些进程的进程名称旁边有一个图标。我发现使用这些“图标”的流程似乎符合我对“应用程序”的分类。 PID必须满足什么标准才能在其流程名称旁边有一个“图标”? – fdh

1

我同意twalberg的所有评论。

您可以通过查看从命令行运行的ps -ef的输出来实现您的理解。 (Terminal.app)。

您可以ps -ef | grep -i safari查看是否返回任何唯一的东西。其他“用户”应用程序也是如此。

也可以尝试

ps -ef| awk '{print $1}' | sort | uniq -c 

看到所有权的蔓延对所有进程。

在花时间尝试在objective-c中编写代码之前了解此内容。

IHTH

+0

如果打开活动监视器,您会发现某些进程在进程名称旁边有一个图标。我发现使用这些“图标”的流程似乎符合我对“应用程序”的分类。 PID必须满足什么标准才能在其流程名称旁边有一个“图标”? – fdh

+0

图标是一个通用图标还是特定于应用程序的东西?几乎肯定是cfg文件或应用程序资源(编译)中的某些内容。一个客观的人将不得不回答这个问题。祝你好运。 – shellter