1b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Use of this source code is governed by a BSD-style license that can be
3b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// found in the LICENSE file.
4b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
5b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/process/kill.h"
6b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
7b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/process/process_iterator.h"
8b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
9b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratnamespace base {
10b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
11b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratbool KillProcesses(const FilePath::StringType& executable_name,
12b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat                   int exit_code,
13b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat                   const ProcessFilter* filter) {
14b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  bool result = true;
15b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  NamedProcessIterator iter(executable_name, filter);
16b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  while (const ProcessEntry* entry = iter.NextProcessEntry()) {
17b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat    Process process = Process::Open(entry->pid());
18b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat    result &= process.Terminate(exit_code, true);
19b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  }
20b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat  return result;
21b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}
22b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat
23b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}  // namespace base
24