我有一个网站,它允许用户将图像下载为视频剪辑。
他们可以选择说mp4,avi,ogg等。
我通过C#/ Asp.net 4.0中的Process Class使用ffmpeg来执行转换工具。
我在测试中已经注意到,如果我强制中止这种转换,比如停止IIS,结束任务管理器中的wp3进程),经过一段时间的这样做,如果我再查看Web服务器上的任务管理器,有很多实例FFMPEG没有正常关闭。
我理想的做法是杀死任何可能对该SPECIFIC用户(而不是任何其他用户/会话)挥之不去的进程,然后启动转换工具。
是否可以管理/控制该用户/会话的FFMPEG流程,或者我应该查看一次只能启用一个用户的排队系统应该能够使用此转换工具吗?
我希望我能说清楚这个声音吗?
我可以发布显示Process / ffmpeg如何在C#中启动的代码,但我看不出这会如何帮助解决这个问题。
由于
答案 0 :(得分:1)
希望这会有所帮助:
private void killProcess(String processName, String processOwner)
{
foreach (var process in Process.GetProcessesByName(processName))
{
if(GetProcessOwner(processName).equals(processOwner))
{
process.Kill();
}
}
}
public string GetProcessOwner(string processName)
{
string query = "Select * from Win32_Process Where Name = \"" + processName + "\"";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();
foreach (ManagementObject obj in processList)
{
string[] argList = new string[] { string.Empty, string.Empty };
int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
if (returnVal == 0)
{
// return DOMAIN\user
string owner = argList[1] + "\\" + argList[0];
return owner;
}
}
return "NO OWNER";
}