OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/eintr_wrapper.h" | 8 #include "base/eintr_wrapper.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/multiprocess_test.h" | 10 #include "base/multiprocess_test.h" |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 191 |
192 const int kChildPipe = 20; // FD # for write end of pipe in child process. | 192 const int kChildPipe = 20; // FD # for write end of pipe in child process. |
193 MULTIPROCESS_TEST_MAIN(ProcessUtilsLeakFDChildProcess) { | 193 MULTIPROCESS_TEST_MAIN(ProcessUtilsLeakFDChildProcess) { |
194 // This child process counts the number of open FDs, it then writes that | 194 // This child process counts the number of open FDs, it then writes that |
195 // number out to a pipe connected to the parent. | 195 // number out to a pipe connected to the parent. |
196 int num_open_files = 0; | 196 int num_open_files = 0; |
197 int write_pipe = kChildPipe; | 197 int write_pipe = kChildPipe; |
198 int max_files = GetMaxFilesOpenInProcess(); | 198 int max_files = GetMaxFilesOpenInProcess(); |
199 for (int i = STDERR_FILENO + 1; i < max_files; i++) { | 199 for (int i = STDERR_FILENO + 1; i < max_files; i++) { |
200 if (i != kChildPipe) { | 200 if (i != kChildPipe) { |
201 if (HANDLE_EINTR(close(i)) != -1) { | 201 int fd; |
| 202 if ((fd = HANDLE_EINTR(dup(i))) != -1) { |
| 203 close(fd); |
202 num_open_files += 1; | 204 num_open_files += 1; |
203 } | 205 } |
204 } | 206 } |
205 } | 207 } |
206 | 208 |
207 int written = HANDLE_EINTR(write(write_pipe, &num_open_files, | 209 int written = HANDLE_EINTR(write(write_pipe, &num_open_files, |
208 sizeof(num_open_files))); | 210 sizeof(num_open_files))); |
209 DCHECK_EQ(static_cast<size_t>(written), sizeof(num_open_files)); | 211 DCHECK_EQ(static_cast<size_t>(written), sizeof(num_open_files)); |
210 HANDLE_EINTR(close(write_pipe)); | 212 HANDLE_EINTR(close(write_pipe)); |
211 | 213 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 "16 0 1 0 1676099790 2957312 114 4294967295 134512640 134528148 " | 296 "16 0 1 0 1676099790 2957312 114 4294967295 134512640 134528148 " |
295 "3221224832 3221224344 3086339742 0 0 0 0 0 0 0 17 0 0 0"; | 297 "3221224832 3221224344 3086339742 0 0 0 0 0 0 0 17 0 0 0"; |
296 | 298 |
297 EXPECT_EQ(0, ParseProcStatCPU(kSelfStat)); | 299 EXPECT_EQ(0, ParseProcStatCPU(kSelfStat)); |
298 } | 300 } |
299 #endif | 301 #endif |
300 | 302 |
301 #endif // defined(OS_POSIX) | 303 #endif // defined(OS_POSIX) |
302 | 304 |
303 } // namespace base | 305 } // namespace base |
OLD | NEW |