我用Java启动子进程如下:
final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
它现在在后台运行.一切都好又好.
如果我现在的程序崩溃(这是仍然在开发中:-))子进程似乎仍流连.如何在父Java进程终止时自动结束?
如果它有帮助,我使用的是Mac OS X 10.5
在Windows上,我可以这样做:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
Run Code Online (Sandbox Code Playgroud)
我怎么能在*nix上做同样的事情?
我需要将我的进程设置为在'nobody'下运行,我找到了os.setuid(),但是我怎么找到uid我的login?
我发现uid在/ etc/passwd中,但也许比扫描/ etc/passwd有更多的pythonic方式.任何人?
Linux内核将进程列表存储在循环双向链表中,称为任务列表.它背后的原因是什么?为什么使用循环双链表?使用这种数据结构有什么好处?创建者试图通过使用这种数据结构来实现什么?
这个问题最初是在询问"你在软件开发组织中使用什么KPI".不幸的是,似乎KPI是一个四个字母的单词,并且直接的假设是KPI总是被误用(也许它们是?).
所以,我希望能够改进这个问题,以实现我最初认为KPI有用的基本目标.假设您有一些流程来说明您(或您的组织)如何开发软件.其次假设您(或您的团队)希望在开发和交付软件方面做得更好.最后,假设改进的方法之一是改进您的过程.
鉴于这一切,您如何知道您的流程改进是否产生了积极影响?如果这些是KPI或[SMART目标](http://en.wikipedia.org/wiki/SMART_ ( project_management),请提供您认为有效的KPI/SMART目标的个人或团体.如果是其他一些机制请解释它是什么.最后,我想,如果你不认为改进过程是有用的,我想你也可以解释一下.
我认为有用的改进领域是:质量,发布的及时性,生产力,灵活性.如果个人或开发团队的其他方面,那么知道这将是有趣的.
澄清笔记:
问题不在于如何最好地适应或改变一个过程,或者一个好的过程改进过程(无论是Kaizen,回顾等).它也不是关于根本原因分析或用于确定应该改进过程的哪些具体方面的其他方法.
使用措施来确定是否已实现过程改进,不应与正在进行的过程改进相混淆.(这是一件好事,但这不是问题所在!)
这个过程可能是任何事情; scrum,敏捷,极端,瀑布,ad-hoc.这个问题不是关于哪种过程最适合某些类型的软件开发,而是关于如何随着时间推移改进该过程.
显然,具体指标将取决于所涉及的过程以及试图改进的感知问题.这个问题的目的只是为了获得所用指标的例子,这显然会跨越许多不同的流程和改进领域.
度量不需要的东西,用所有的时间,例如,可以只使用它,而如果测试过程改变的作品.(例如,在任何时候进行测量和跟踪都可能过于昂贵 - 时间或金钱明智 - 因此您只需跟踪它就会调整过程).
如果实施不当,使用度量可能会对开发人员游戏系统或其他方面产生不利影响.假设实施流程变更的人员已意识到此问题并已采取有效措施来缓解此问题.
所有软件组织都不同,它们如何适应公司,因此公司内部会有不同的特定事物,但我认为产品质量,生产力,灵活性和发布的及时性适用于大多数(如果不是所有)组织.(根据具体的组织,明显不同的重点.)
这个问题与源代码行无关!特别是,我对测量程序员的工作效率不感兴趣,特别是在SLOC或固定的错误数量或任何其他天真的测量方面.我对团队或个人衡量他们改进的更高层次方式感兴趣.我对使用单个KPI来衡量任何人的表现并不感兴趣.我有兴趣使用一系列KPI来衡量和改进我的团队的软件开发过程.
我知道关于KPI被滥用和无效的恐怖故事(你不需要非常努力地找到它们),但我无法相信没有人试图不断改进他们的流程,所以必须有一些关键绩效指标的好例子.
我知道应用于各个软件程序员的简单度量的缺点.我真的希望得到人们认为有用的KPI或替代策略的例子,而不是我不应该使用KPI的所有原因.
我最感兴趣的是与大型公司内的开发组织相关的流程和性能,而不是整个软件开发公司.例如,软件公司应该确保产品具有适合市场的功能,但通常是产品管理的角色,而不是工程.是的,关于工程师应该参与产品管理的原因和程度,还有一个完整的其他讨论,但这是一个单独的讨论.
看看android文档,似乎我们没有能力知道应用程序什么时候关闭.无论是由用户明确还是由操作系统自动完成.
以下是仅在模拟方案中可用的onTerminate()文档.
public void onTerminate()
Run Code Online (Sandbox Code Playgroud)
自:API级别1
此方法用于模拟过程环境.永远不会在生产Android设备上调用它,只需杀死它们即可删除进程; 这样做时不会执行任何用户代码(包括此回调).
当用户关闭应用程序时,是否有任何其他方法可以报告?
如果我们需要在我们未来的生产应用程序中加入其他功能,我们需要从试点/可用性的角度来了解.
以前我已经成功实施了 PM2,但目前还没有。
如果我手动启动它,我的节点应用程序确实运行得很好,但我没有做任何事情让它通过 PM2 运行,即使 PM2似乎正在启动它。这就是我的意思:
如果我运行 pm2 start server/index.js,终端中的响应为:
$ pm2 start server/index.js
[PM2] Spawning PM2 daemon with pm2_home=c:\pm2_system\.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting D:\Program Files\nodeApps\service-management-api\server\index.js in fork_mode (1 instance)
[PM2] Done.*
Run Code Online (Sandbox Code Playgroud)
然后终端打印出一个包含应用信息的表格。它看起来不太好贴在这里,所以我会列出来:
App Name: index
id: 0
version: 1.0.0
mode: fork
pid: 8984
status: online
restart: 0
update 0s
cpu: 0%
mem: 26.0 MB
user: ME
watching: disabled
Run Code Online (Sandbox Code Playgroud)
看来节点进程应该正在运行。但是如果我立即进入pm2 list它显示没有进程正在运行。如果我输入 pm2 stop index,它会说:
$ pm2 stop index
[PM2] Spawning PM2 daemon …Run Code Online (Sandbox Code Playgroud) 我正在.Net中开发控制台应用程序,我想根据应用程序从cmd.exe或explorer.exe启动的信息稍微更改一下行为.可能吗?
我正在使用 Visual Studio 代码。我的机器遇到性能问题。我去了任务管理器,看到Code.exe进程选项卡中有几个实例,即使我的 PC 上只有一个运行/活动的 Visual Studio Code 窗口。
我可以看到总共有八个Code.exe. 尽管如此,我可以看到所有八个实例都占用了几 KB 到最大 55 MB 的 RAM 内存。所以有一件事是肯定的,这几个进程并没有一起吃掉太多的内存,但它们的计数仍然让我绊倒了一秒钟。我了解到一个 Visual Studio Code 窗口应该映射到一个Code.exe进程。
我还有一个观察。我打开了另一个新的 Visual Studio Code 窗口,看到这次Code.exe进程数增加了两个而不是一个。Code.exe当总共有 2 个 Visual Studio Code 窗口当前处于活动状态时,总进程数现在自己变成了 10。我不确定这里发生了什么。有人可以帮助我了解这是否是内部实现 Visual Studio Code 的正确行为吗?