process_util.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/process_util.h" 6 7namespace base { 8 9int GetProcessCount(const std::wstring& executable_name, 10 const ProcessFilter* filter) { 11 int count = 0; 12 NamedProcessIterator iter(executable_name, filter); 13 while (iter.NextProcessEntry()) 14 ++count; 15 return count; 16} 17 18bool KillProcesses(const std::wstring& executable_name, int exit_code, 19 const ProcessFilter* filter) { 20 bool result = true; 21 NamedProcessIterator iter(executable_name, filter); 22 while (const ProcessEntry* entry = iter.NextProcessEntry()) { 23#if defined(OS_WIN) 24 result &= KillProcessById(entry->pid(), exit_code, true); 25#else 26 result &= KillProcess(entry->pid(), exit_code, true); 27#endif 28 } 29 return result; 30} 31 32const ProcessEntry* ProcessIterator::NextProcessEntry() { 33 bool result = false; 34 do { 35 result = CheckForNextProcess(); 36 } while (result && !IncludeEntry()); 37 if (result) 38 return &entry_; 39 return NULL; 40} 41 42bool ProcessIterator::IncludeEntry() { 43 return !filter_ || filter_->Includes(entry_); 44} 45 46ProcessIterator::ProcessEntries ProcessIterator::Snapshot() { 47 ProcessEntries found; 48 while (const ProcessEntry* process_entry = NextProcessEntry()) { 49 found.push_back(*process_entry); 50 } 51 return found; 52} 53 54NamedProcessIterator::NamedProcessIterator(const std::wstring& executable_name, 55 const ProcessFilter* filter) 56 : ProcessIterator(filter), 57 executable_name_(executable_name) { 58} 59 60NamedProcessIterator::~NamedProcessIterator() { 61} 62 63} // namespace base 64