proc-wait3 1.9.0 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/proc-wait3.gemspec CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'proc-wait3'
5
- spec.version = '1.9.0'
5
+ spec.version = '1.9.2'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Apache-2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -10,19 +10,23 @@ Gem::Specification.new do |spec|
10
10
  spec.summary = 'Adds wait3, wait4 and other methods to the Process module'
11
11
  spec.test_file = 'spec/proc_wait3_spec.rb'
12
12
  spec.extensions = ['ext/extconf.rb']
13
- spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
13
+ spec.files = Dir['**/*'].reject { |f| f.include?('git') }
14
14
  spec.cert_chain = Dir['certs/*']
15
15
 
16
16
  spec.add_development_dependency('rake')
17
17
  spec.add_development_dependency('rspec', '~> 3.9')
18
+ spec.add_development_dependency('rubocop')
19
+ spec.add_development_dependency('rubocop-rspec')
18
20
 
19
21
  spec.metadata = {
20
- 'homepage_uri' => 'https://github.com/djberg96/proc-wait3',
21
- 'bug_tracker_uri' => 'https://github.com/djberg96/proc-wait3/issues',
22
- 'changelog_uri' => 'https://github.com/djberg96/proc-wait3/blob/master/CHANGES.md',
23
- 'documentation_uri' => 'https://github.com/djberg96/proc-wait3/wiki',
24
- 'source_code_uri' => 'https://github.com/djberg96/proc-wait3',
25
- 'wiki_uri' => 'https://github.com/djberg96/proc-wait3/wiki'
22
+ 'homepage_uri' => 'https://github.com/djberg96/proc-wait3',
23
+ 'bug_tracker_uri' => 'https://github.com/djberg96/proc-wait3/issues',
24
+ 'changelog_uri' => 'https://github.com/djberg96/proc-wait3/blob/main/CHANGES.md',
25
+ 'documentation_uri' => 'https://github.com/djberg96/proc-wait3/wiki',
26
+ 'source_code_uri' => 'https://github.com/djberg96/proc-wait3',
27
+ 'wiki_uri' => 'https://github.com/djberg96/proc-wait3/wiki',
28
+ 'rubygems_mfa_required' => 'true',
29
+ 'github_repo' => 'https://github.com/djberg96/proc-wait3'
26
30
  }
27
31
 
28
32
  spec.description = <<-EOF
@@ -1,19 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #######################################################################
2
4
  # proc_wait3_spec.rb
3
5
  #
4
6
  # Test suite for the Ruby proc-wait3 library. You should run these
5
7
  # via the 'rake spec' task.
6
8
  #######################################################################
9
+ require 'English'
7
10
  require 'proc/wait3'
8
11
  require 'rspec'
9
12
  require 'rbconfig'
10
13
 
11
14
  RSpec.describe Process do
15
+ # Something in the guts of Ruby was being a pain.
16
+ Signal.trap('CHLD', 'IGNORE') if RUBY_VERSION.to_f < 3
17
+
12
18
  let(:solaris) { RbConfig::CONFIG['host_os'] =~ /sunos|solaris/i }
13
19
  let(:darwin) { RbConfig::CONFIG['host_os'] =~ /darwin|osx/i }
14
20
  let(:hpux) { RbConfig::CONFIG['host_os'] =~ /hpux/i }
15
21
  let(:linux) { RbConfig::CONFIG['host_os'] =~ /linux/i }
16
- let(:freebsd) { RbConfig::CONFIG['host_os'] =~ /bsd/i }
22
+ let(:bsd) { RbConfig::CONFIG['host_os'] =~ /bsd|dragonfly/i }
17
23
 
18
24
  let(:proc_stat_members) {
19
25
  %i[
@@ -25,181 +31,182 @@ RSpec.describe Process do
25
31
 
26
32
  before do
27
33
  @proc_stat = nil
34
+ @pid = nil
28
35
  end
29
36
 
30
- example "version constant is set to expected value" do
31
- expect(Process::WAIT3_VERSION).to eq('1.9.0')
37
+ example 'version constant is set to expected value' do
38
+ expect(Process::WAIT3_VERSION).to eq('1.9.2')
32
39
  expect(Process::WAIT3_VERSION).to be_frozen
33
40
  end
34
41
 
35
- example "wait3 method is defined" do
36
- expect(Process).to respond_to(:wait3)
42
+ example 'wait3 method is defined' do
43
+ expect(described_class).to respond_to(:wait3)
37
44
  end
38
45
 
39
- example "wait3 works as expected" do
46
+ example 'wait3 works as expected' do
40
47
  skip 'wait3 test skipped on this platform' if darwin
41
- fork{ sleep 0.5 }
42
- expect{ Process.wait3 }.not_to raise_error
48
+ @pid = fork { sleep 0.5 }
49
+ expect { described_class.wait3 }.not_to raise_error
43
50
  end
44
51
 
45
- example "wait3 returns the expected proc status members" do
52
+ example 'wait3 returns the expected proc status members' do
46
53
  skip 'wait3 test skipped on this platform' if darwin
47
- fork{ sleep 0.5 }
48
- expect{ @proc_stat = Process.wait3 }.not_to raise_error
49
- expect( @proc_stat.members).to eq(proc_stat_members)
54
+ @pid = fork { sleep 0.5 }
55
+ expect { @proc_stat = described_class.wait3 }.not_to raise_error
56
+ expect(@proc_stat.members).to eq(proc_stat_members)
50
57
  end
51
58
 
52
- example "wait3 with WNOHANG works as expected" do
53
- fork{ sleep 0.5 }
54
- expect{ Process.wait3(Process::WNOHANG) }.not_to raise_error
59
+ example 'wait3 with WNOHANG works as expected' do
60
+ @pid = fork { sleep 0.5 }
61
+ expect { described_class.wait3(Process::WNOHANG) }.not_to raise_error
55
62
  end
56
63
 
57
- example "wait3 sets and returns $last_status to expected values" do
64
+ example 'wait3 sets and returns $last_status to expected values' do
58
65
  skip 'wait3 test skipped on this platform' if darwin
59
- fork{ sleep 0.5 }
60
- Process.wait3
61
- expect($last_status).to be_kind_of(Struct::ProcStat)
66
+ @pid = fork { sleep 0.5 }
67
+ described_class.wait3
68
+ expect($last_status).to be_a(Struct::ProcStat)
62
69
  expect($last_status).not_to be_nil
63
70
  end
64
71
 
65
- example "wait3 sets pid and status members of $?" do
72
+ example 'wait3 sets pid and status members of $?' do
66
73
  skip 'wait3 test skipped on this platform' if darwin
67
- fork{ sleep 0.5 }
68
- Process.wait3
69
- expect($?).not_to be_nil
74
+ @pid = fork { sleep 0.5 }
75
+ described_class.wait3
76
+ expect($CHILD_STATUS).not_to be_nil
70
77
  end
71
78
 
72
- example "wait3 returns frozen struct" do
79
+ example 'wait3 returns frozen struct' do
73
80
  skip 'wait3 test skipped on this platform' if darwin
74
- fork{ sleep 0.5 }
75
- struct = Process.wait3
81
+ @pid = fork { sleep 0.5 }
82
+ struct = described_class.wait3
76
83
  expect(struct).to be_frozen
77
84
  end
78
85
 
79
- example "getdtablesize works as expected" do
86
+ example 'getdtablesize works as expected' do
80
87
  skip 'getdtablesize skipped on this platform' unless solaris
81
88
 
82
- expect(Process).to respond_to(:getdtablesize)
83
- expect(Process.getdtablesize).to be_kind_of(Fixnum)
84
- assert(Process.getdtablesize > 0)
89
+ expect(described_class).to respond_to(:getdtablesize)
90
+ expect(described_class.getdtablesize).to be_a(Integer)
91
+ assert(described_class.getdtablesize > 0)
85
92
  end
86
93
 
87
- example "wait4 method is defined" do
94
+ example 'wait4 method is defined' do
88
95
  skip 'wait4 test skipped on this platform' if hpux
89
- expect(Process).to respond_to(:wait4)
96
+ expect(described_class).to respond_to(:wait4)
90
97
  end
91
98
 
92
- example "wait4 requires at least one argument" do
99
+ example 'wait4 requires at least one argument' do
93
100
  skip 'wait4 test skipped on this platform' if hpux
94
- expect{ Process.wait4 }.to raise_error(ArgumentError)
101
+ expect { described_class.wait4 }.to raise_error(ArgumentError)
95
102
  end
96
103
 
97
- example "wait4 works as expected" do
104
+ example 'wait4 works as expected' do
98
105
  skip 'wait4 test skipped on this platform' if hpux || darwin
99
106
 
100
- pid = fork{ sleep 0.5 }
101
- expect{ @proc_stat = Process.wait4(pid) }.not_to raise_error
102
- expect(@proc_stat).to be_kind_of(Struct::ProcStat)
107
+ @pid = fork { sleep 0.5 }
108
+ expect { @proc_stat = described_class.wait4(@pid) }.not_to raise_error
109
+ expect(@proc_stat).to be_a(Struct::ProcStat)
103
110
  end
104
111
 
105
- example "wait4 sets and returns $last_status to expected values" do
112
+ example 'wait4 sets and returns $last_status to expected values' do
106
113
  skip 'wait4 test skipped on this platform' if hpux || darwin
107
114
 
108
- pid = fork{ sleep 0.5 }
109
- Process.wait4(pid)
110
- expect($last_status).to be_kind_of(Struct::ProcStat)
115
+ @pid = fork { sleep 0.5 }
116
+ described_class.wait4(@pid)
117
+ expect($last_status).to be_a(Struct::ProcStat)
111
118
  expect($last_status).not_to be_nil
112
119
  end
113
120
 
114
- example "wait4 sets pid and status members of $?" do
121
+ example 'wait4 sets pid and status members of $?' do
115
122
  skip 'wait4 test skipped on this platform' if hpux || darwin
116
123
 
117
- pid = fork{ sleep 0.5 }
118
- Process.wait4(pid)
119
- expect($?).not_to be_nil
124
+ @pid = fork { sleep 0.5 }
125
+ described_class.wait4(@pid)
126
+ expect($CHILD_STATUS).not_to be_nil
120
127
  end
121
128
 
122
- example "wait4 returns frozen struct" do
129
+ example 'wait4 returns frozen struct' do
123
130
  skip 'wait4 test skipped on this platform' if hpux || darwin
124
131
 
125
- pid = fork{ sleep 0.5 }
126
- struct = Process.wait4(pid)
132
+ @pid = fork { sleep 0.5 }
133
+ struct = described_class.wait4(@pid)
127
134
  expect(struct).to be_frozen
128
135
  end
129
136
 
130
- example "waitid method is defined" do
131
- skip 'waitid test skipped on this platform' if hpux || darwin || freebsd
137
+ example 'waitid method is defined' do
138
+ skip 'waitid test skipped on this platform' if hpux || darwin || bsd
132
139
 
133
- expect(Process).to respond_to(:waitid)
140
+ expect(described_class).to respond_to(:waitid)
134
141
  end
135
142
 
136
- example "waitid method works as expected" do
137
- skip 'waitid test skipped on this platform' if hpux || darwin || freebsd
143
+ example 'waitid method works as expected' do
144
+ skip 'waitid test skipped on this platform' if hpux || darwin || bsd
138
145
 
139
- pid = fork{ sleep 0.5 }
140
- expect{ Process.waitid(Process::P_PID, pid, Process::WEXITED) }.not_to raise_error
146
+ @pid = fork { sleep 0.5 }
147
+ expect { described_class.waitid(Process::P_PID, @pid, Process::WEXITED) }.not_to raise_error
141
148
  end
142
149
 
143
- example "waitid method raises expected errors if wrong argument type is passed" do
144
- skip 'waitid test skipped on this platform' if hpux || darwin || freebsd
150
+ example 'waitid method raises expected errors if wrong argument type is passed' do
151
+ skip 'waitid test skipped on this platform' if hpux || darwin || bsd
145
152
 
146
- pid = fork{ sleep 0.5 }
147
- expect{ Process.waitid("foo", pid, Process::WEXITED) }.to raise_error(TypeError)
148
- expect{ Process.waitid(Process::P_PID, pid, "foo") }.to raise_error(TypeError)
149
- expect{ Process.waitid(Process::P_PID, "foo", Process::WEXITED) }.to raise_error(TypeError)
153
+ @pid = fork { sleep 0.5 }
154
+ expect { described_class.waitid('foo', @pid, Process::WEXITED) }.to raise_error(TypeError)
155
+ expect { described_class.waitid(Process::P_PID, @pid, 'foo') }.to raise_error(TypeError)
156
+ expect { described_class.waitid(Process::P_PID, 'foo', Process::WEXITED) }.to raise_error(TypeError)
150
157
  end
151
158
 
152
- example "waitid method raises expected error if invalid argument is passed" do
153
- skip 'waitid test skipped on this platform' if hpux || darwin || freebsd
159
+ example 'waitid method raises expected error if invalid argument is passed' do
160
+ skip 'waitid test skipped on this platform' if hpux || darwin || bsd
154
161
 
155
- fork{ sleep 0.5 }
156
- expect{ Process.waitid(Process::P_PID, 99999999, Process::WEXITED) }.to raise_error(Errno::ECHILD)
162
+ @pid = fork { sleep 0.5 }
163
+ expect { described_class.waitid(Process::P_PID, 99999999, Process::WEXITED) }.to raise_error(Errno::ECHILD)
157
164
  end
158
165
 
159
- example "sigsend method is defined" do
166
+ example 'sigsend method is defined' do
160
167
  skip 'sigsend test skipped on this platform' unless solaris
161
168
 
162
- expect(Process).to respond_to(:sigsend)
169
+ expect(described_class).to respond_to(:sigsend)
163
170
  end
164
171
 
165
- example "sigsend works as expected" do
172
+ example 'sigsend works as expected' do
166
173
  skip 'sigsend test skipped on this platform' unless solaris
167
174
 
168
- pid = fork{ sleep 0.5 }
169
- expect{ Process.sigsend(Process::P_PID, pid, 0) }.not_to raise_error
175
+ @pid = fork { sleep 0.5 }
176
+ expect { described_class.sigsend(Process::P_PID, @pid, 0) }.not_to raise_error
170
177
  end
171
178
 
172
- example "getrusage method is defined" do
173
- expect(Process).to respond_to(:getrusage)
179
+ example 'getrusage method is defined' do
180
+ expect(described_class).to respond_to(:getrusage)
174
181
  end
175
182
 
176
- example "getrusage works as expected" do
177
- fork{ sleep 0.5 }
183
+ example 'getrusage works as expected' do
184
+ @pid = fork { sleep 0.5 }
178
185
 
179
- expect{ Process.getrusage }.not_to raise_error
180
- expect{ Process.getrusage(true) }.not_to raise_error
186
+ expect { described_class.getrusage }.not_to raise_error
187
+ expect { described_class.getrusage(true) }.not_to raise_error
181
188
  end
182
189
 
183
- example "getrusage can get thread info on Linux" do
190
+ example 'getrusage can get thread info on Linux' do
184
191
  skip 'getrusage only tested on Linux' unless linux
185
- expect{ Process.getrusage(Process::RUSAGE_THREAD) }.not_to raise_error
192
+ expect { described_class.getrusage(Process::RUSAGE_THREAD) }.not_to raise_error
186
193
  end
187
194
 
188
- example "getrusage returns the expected struct" do
195
+ example 'getrusage returns the expected struct' do
189
196
  skip 'getrusage only tested on Linux' unless linux
190
197
 
191
- fork{ sleep 0.5 }
192
- expect(Process.getrusage).to be_kind_of(Struct::RUsage)
193
- expect(Process.getrusage.stime).to be_kind_of(Float)
194
- expect(Process.getrusage.utime).to be_kind_of(Float)
198
+ @pid = fork { sleep 0.5 }
199
+ expect(described_class.getrusage).to be_a(Struct::RUsage)
200
+ expect(described_class.getrusage.stime).to be_a(Float)
201
+ expect(described_class.getrusage.utime).to be_a(Float)
195
202
  end
196
203
 
197
- example "pause method is defined" do
198
- expect(Process).to respond_to(:pause)
204
+ example 'pause method is defined' do
205
+ expect(described_class).to respond_to(:pause)
199
206
  end
200
207
 
201
- example "expected constants are defined" do
202
- skip 'wait constant check skipped on this platform' if darwin || freebsd
208
+ example 'expected constants are defined' do
209
+ skip 'wait constant check skipped on this platform' if darwin || bsd
203
210
 
204
211
  expect(Process::WCONTINUED).not_to be_nil
205
212
  expect(Process::WEXITED).not_to be_nil
@@ -210,8 +217,8 @@ RSpec.describe Process do
210
217
  expect(Process::WTRAPPED).not_to be_nil
211
218
  end
212
219
 
213
- example "expected process type flag constants are defined" do
214
- skip 'process type flag check skipped on this platform' if linux || darwin || freebsd
220
+ example 'expected process type flag constants are defined' do
221
+ skip 'process type flag check skipped on this platform' if linux || darwin || bsd
215
222
 
216
223
  expect(Process::P_ALL).not_to be_nil
217
224
  expect(Process::P_CID).not_to be_nil
@@ -225,10 +232,19 @@ RSpec.describe Process do
225
232
  expect(Process::P_MYID).not_to be_nil
226
233
  end
227
234
 
228
- example "solaris-specific process type flags are defined on solaris" do
235
+ example 'solaris-specific process type flags are defined on solaris' do
229
236
  skip 'P_TASKID and P_PROJID constant check skipped on this platform' unless solaris
230
237
 
231
238
  expect(Process::P_TASKID).not_to be_nil
232
239
  expect(Process::P_PROJID).not_to be_nil
233
240
  end
241
+
242
+ example 'bsd-specific process type flags are defined on BSD platforms' do
243
+ skip 'P_JAILID constant check skipped on this platform' unless bsd
244
+ expect(Process::P_JAILID).not_to be_nil
245
+ end
246
+
247
+ def after
248
+ Process.kill(9, @pid) if @pid
249
+ end
234
250
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proc-wait3
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -35,7 +35,7 @@ cert_chain:
35
35
  ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
36
  WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
37
37
  -----END CERTIFICATE-----
38
- date: 2021-01-07 00:00:00.000000000 Z
38
+ date: 2024-04-21 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rake
@@ -65,6 +65,34 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '3.9'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rubocop
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rubocop-rspec
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
68
96
  description: |2
69
97
  The proc-wait3 library adds the wait3, wait4, waitid, pause, sigsend,
70
98
  and getrusage methods to the Process module.
@@ -81,7 +109,7 @@ files:
81
109
  - README.md
82
110
  - Rakefile
83
111
  - certs/djberg96_pub.pem
84
- - doc/wait3.txt
112
+ - doc/wait3.md
85
113
  - examples/example_getrusage.rb
86
114
  - examples/example_pause.rb
87
115
  - examples/example_wait3.rb
@@ -98,10 +126,12 @@ licenses:
98
126
  metadata:
99
127
  homepage_uri: https://github.com/djberg96/proc-wait3
100
128
  bug_tracker_uri: https://github.com/djberg96/proc-wait3/issues
101
- changelog_uri: https://github.com/djberg96/proc-wait3/blob/master/CHANGES.md
129
+ changelog_uri: https://github.com/djberg96/proc-wait3/blob/main/CHANGES.md
102
130
  documentation_uri: https://github.com/djberg96/proc-wait3/wiki
103
131
  source_code_uri: https://github.com/djberg96/proc-wait3
104
132
  wiki_uri: https://github.com/djberg96/proc-wait3/wiki
133
+ rubygems_mfa_required: 'true'
134
+ github_repo: https://github.com/djberg96/proc-wait3
105
135
  post_install_message:
106
136
  rdoc_options: []
107
137
  require_paths:
@@ -117,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
147
  - !ruby/object:Gem::Version
118
148
  version: '0'
119
149
  requirements: []
120
- rubygems_version: 3.0.3
150
+ rubygems_version: 3.3.26
121
151
  signing_key:
122
152
  specification_version: 4
123
153
  summary: Adds wait3, wait4 and other methods to the Process module
metadata.gz.sig CHANGED
Binary file
data/doc/wait3.txt DELETED
@@ -1,192 +0,0 @@
1
- == Description
2
- Adds the wait3, wait4, waitid, pause, sigsend, and getrusage methods to
3
- the Process module.
4
-
5
- == Synopsis
6
- require 'proc/wait3'
7
-
8
- pid = fork{ sleep 1; exit 2 }
9
- p Time.now
10
- Process.wait3
11
- p $?
12
-
13
- == Module Methods
14
- Proc.pause(signals=nil)
15
- Pauses the current process. If the process receives any of the signals
16
- you pass as arguments it will return from the pause and continue with
17
- the execution of your code. Otherwise, it will exit.
18
-
19
- Note that you must leave out the 'SIG' prefix for the signal name, e.g.
20
- use 'INT', not 'SIGINT'.
21
-
22
- Returns the result of the pause() function, which should always be -1.
23
-
24
- Process.sigsend(idtype, id, signal=0)
25
- Sends a signal of type "idtype" to a process or process group "id". This
26
- is more versatile method of sending signals to processes than Process.kill.
27
-
28
- For a list of valid idtype values, see the "Process type constants" below.
29
- Not supported on all platforms.
30
-
31
- Proc.wait3(flags=0)
32
- Delays its caller until a signal is received or one of its child processes
33
- terminates or stops due to tracing.
34
-
35
- The return value is a ProcStat structure and sets the $last_status global
36
- variable. The special global $? is also set. Raises a SystemError if there
37
- are no child processes.
38
-
39
- Proc.wait4(pid, flags=0)
40
- Waits for the given child process to exit. Returns a ProcStat structure.
41
- The $last_status global variable is set. Also sets the $? special global
42
- variable.
43
-
44
- Proc.waitid(id_type, id_num=nil, options=nil)
45
- Suspends the calling process until one of its children changes state,
46
- returning immediately if a child process changed state prior to the call.
47
- The state of a child process will change if it terminates, stops because
48
- of a signal, becomes trapped or reaches a breakpoint.
49
-
50
- The id_num corresponds to a process ID or process group ID, depending on
51
- the value of +id_type+, which may be Process::P_PID, Process::P_PGID or
52
- Process::P_ALL. If +id_type+ is Process::P_ALL, then the +id_num+ is ignored.
53
-
54
- The options argument is used to specify which state changes are to be
55
- waited for. It is constructed from the bitwise-OR of one or more of the
56
- following constants:
57
-
58
- Process::WCONTINUED
59
- Process::WEXITED
60
- Process::WNOHANG
61
- Process::WNOWAIT
62
- Process::WSTOPPED
63
- Process::WTRAPPED (not supported on all platforms)
64
-
65
- If Process::WNOHANG is set as an option, this method will return
66
- immediately, whether or not a child has changed state.
67
-
68
- Calling this method with an +id_type+ of Process::P_ALL and the options set
69
- to 'Process::EXITED | Process::WTRAPPED' is equivalent to calling
70
- Process.wait.
71
-
72
- Returns a Proc::SigInfo struct and sets $?.
73
-
74
- Not supported on all platforms.
75
-
76
- == Constants
77
- === Standard
78
- Process::WAIT3_VERSION
79
- Returns the version of this package as a string.
80
-
81
- === Process type constants
82
- ==== All platforms
83
- Process::P_ALL
84
- All non-system process.
85
-
86
- Process::P_PID
87
- A standard process id.
88
-
89
- Process::P_PGID
90
- Any non-system process group id.
91
-
92
- ==== Not supported on all platforms
93
- Process::P_CID
94
- A scheduler process id.
95
-
96
- Process::P_GID
97
- Any non-system effective process group id.
98
-
99
- Process::P_PROJID
100
- A project process id. Solaris 8 or later only.
101
-
102
- Process::P_SID
103
- A session process id.
104
-
105
- Process::P_TASKID
106
- A task process id. Solaris 8 or later only.
107
-
108
- Process::P_UID
109
- Any non-system effective process user id.
110
-
111
- === The following additional constants are defined if the waitid function is
112
- supported on your system.
113
-
114
- Process::WCONTINUED
115
- Return the status for any child that was stopped and has been continued.
116
-
117
- Process::WEXITED
118
- Wait for process(es) to exit.
119
-
120
- Process::WNOWAIT
121
- Keep the process in a waitable state.
122
-
123
- Process::WSTOPPED
124
- Wait for and return the process status of any child that has stopped upon
125
- receipt of a signal.
126
-
127
- Process::WTRAPPED
128
- Wait for traced process(es) to become trapped or reach a breakpoint.
129
-
130
- Not supported on all platforms.
131
-
132
- === RLIMIT constants
133
- Process::RLIMIT_AS
134
- A synonym for RLIMIT_VMEM
135
-
136
- Process::RLIMIT_CORE
137
- The maximum size of a core file, in bytes, that may be created.
138
-
139
- Process::RLIMIT_CPU
140
- The maximum amount of CPU time, in seconds, the process is allowed to use.
141
-
142
- Process::RLIMIT_DATA
143
- The maximum size of the process' heap size, in bytes.
144
-
145
- Process::RLIMIT_FSIZE
146
- The maximum size of a file, in bytes, that the process may create.
147
-
148
- Process::RLIMIT_NOFILE
149
- The maximum value that the kernel may assign to a file descriptor,
150
- effectively limiting the number of open files for the calling process.
151
-
152
- Process::RLIMIT_STACK
153
- The maximum size of the process' stack in bytes.
154
-
155
- Process::RLIMIT_VMEM
156
- The maximum size of the process' mapped address space.
157
-
158
- Process::RLIM_INFINITY
159
- A infinite limit.
160
-
161
- Process::RLIM_SAVED_CUR
162
- Current soft limit.
163
-
164
- Process::RLIM_SAVED_MAX
165
- Current hard limit.
166
-
167
- == Notes
168
- The wait3 and wait4 methods are similar to the wait2 and waitpid2
169
- methods, except that they return much more information via the rusage
170
- struct.
171
-
172
- == Known Bugs
173
- None that I'm aware of. Please log any bugs on the Github project
174
- page at https://github.com/djberg96/proc-wait3.
175
-
176
- == License
177
- Apache-2.0
178
-
179
- == Copyright
180
- (C) 2003-2019 Daniel J. Berger
181
- All Rights Reserved.
182
-
183
- == Warranty
184
- This package is provided "as is" and without any express or
185
- implied warranties, including, without limitation, the implied
186
- warranties of merchantability and fitness for a particular purpose.
187
-
188
- == Author
189
- Daniel J. Berger
190
-
191
- == See also
192
- wait3, wait4, waitid, pause, sigsend