当我开始
/Applications/Firefox.app/Contents/MacOS/firefox-bin
在使用Mono的Process.Start()的MacOSX上,返回的进程的id与firefox最终运行的进程不匹配.
看起来firefox很快决定启动另一个进程,并杀死当前进程.
这使得很难阻止firefox,并检测它是否仍在运行.我尝试使用-no-remote标志启动firefox,但无济于事.
有没有办法以这样一种方式启动Firefox,它不会这样做"我会快速为你做一个新的过程"跳舞?
通过确保Firefox在启动后保持运行至少3秒,可以在某种程度上检测到这种情况,当它没有时,扫描其他firefox进程.但是,这种技术充其量是不稳定的,因为在缓慢的日子里它可能需要3秒多一点,然后所有依赖于此行为的测试都会失败.
事实证明,只有在要求firefox使用-P MyProfile启动特定的配置文件时才会发生此行为.(我需要做的,因为我需要使用特定的代理服务器设置启动firefox)如果我"正常"启动Firefox,它确实坚持其进程.
当以编程方式使用 mozilla / 嵌入其他应用程序时,您应该使用提供的组件:
mozilla 推荐的“正确方法”...
https://developer.mozilla.org/en/XPCOM
“简单的方法”,Mozilla 开发人员的普遍共识......
http://www.iol.ie/~locka/mozilla/control.htm
需要“执行流程”,只需实例化组件的实例并与之对话,您就应该拥有所需的一切。
然而 ...
如果您确实坚持要查看 Firefox 实例的实际进程,您可能需要调用
Process.Start("...\firefox.exe");
然后试试这个(我相信这也适用于 MAC 操作系统)...
C#/mono:获取 Windows 和 Linux 上的子进程列表
基本思想/思维模式是,如果它实际上立即执行另一个进程,您应该能够发现 as 将是一个“子”进程,而不仅仅是“任务列表”/进程管理器中的列表中的一个进程对于机器。
| 归档时间: |
|
| 查看次数: |
2539 次 |
| 最近记录: |