OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #define _CRT_SECURE_NO_WARNINGS | 5 #define _CRT_SECURE_NO_WARNINGS |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <limits> | 10 #include <limits> |
(...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 } | 870 } |
871 #endif // !defined(OS_FUCHSIA) | 871 #endif // !defined(OS_FUCHSIA) |
872 | 872 |
873 // TODO(port): port those unit tests. | 873 // TODO(port): port those unit tests. |
874 bool IsProcessDead(base::ProcessHandle child) { | 874 bool IsProcessDead(base::ProcessHandle child) { |
875 #if defined(OS_FUCHSIA) | 875 #if defined(OS_FUCHSIA) |
876 // ProcessHandle is an mx_handle_t, not a pid on Fuchsia, so waitpid() doesn't | 876 // ProcessHandle is an mx_handle_t, not a pid on Fuchsia, so waitpid() doesn't |
877 // make sense. | 877 // make sense. |
878 mx_signals_t signals; | 878 mx_signals_t signals; |
879 // Timeout of 0 to check for termination, but non-blocking. | 879 // Timeout of 0 to check for termination, but non-blocking. |
880 if (mx_object_wait_one(child, MX_TASK_TERMINATED, 0, &signals) == NO_ERROR) { | 880 if (mx_object_wait_one(child, MX_TASK_TERMINATED, 0, &signals) == MX_OK) { |
881 DCHECK(signals & MX_TASK_TERMINATED); | 881 DCHECK(signals & MX_TASK_TERMINATED); |
882 return true; | 882 return true; |
883 } | 883 } |
884 return false; | 884 return false; |
885 #else | 885 #else |
886 // waitpid() will actually reap the process which is exactly NOT what we | 886 // waitpid() will actually reap the process which is exactly NOT what we |
887 // want to test for. The good thing is that if it can't find the process | 887 // want to test for. The good thing is that if it can't find the process |
888 // we'll get a nice value for errno which we can test for. | 888 // we'll get a nice value for errno which we can test for. |
889 const pid_t result = HANDLE_EINTR(waitpid(child, NULL, WNOHANG)); | 889 const pid_t result = HANDLE_EINTR(waitpid(child, NULL, WNOHANG)); |
890 return result == -1 && errno == ECHILD; | 890 return result == -1 && errno == ECHILD; |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1039 | 1039 |
1040 base::SpawnChildResult spawn_child = | 1040 base::SpawnChildResult spawn_child = |
1041 SpawnChildWithOptions("SimpleChildProcess", options); | 1041 SpawnChildWithOptions("SimpleChildProcess", options); |
1042 ASSERT_TRUE(spawn_child.process.IsValid()); | 1042 ASSERT_TRUE(spawn_child.process.IsValid()); |
1043 | 1043 |
1044 int exit_code = kSuccess; | 1044 int exit_code = kSuccess; |
1045 EXPECT_TRUE(spawn_child.process.WaitForExit(&exit_code)); | 1045 EXPECT_TRUE(spawn_child.process.WaitForExit(&exit_code)); |
1046 EXPECT_NE(kSuccess, exit_code); | 1046 EXPECT_NE(kSuccess, exit_code); |
1047 } | 1047 } |
1048 #endif // defined(OS_LINUX) | 1048 #endif // defined(OS_LINUX) |
OLD | NEW |