File tree 2 files changed +16
-6
lines changed
2 files changed +16
-6
lines changed Original file line number Diff line number Diff line change @@ -370,7 +370,7 @@ pub fn posix_spawn<SA: AsRef<CStr>, SE: AsRef<CStr>>(
370
370
) -> Result < Pid > {
371
371
let mut pid = 0 ;
372
372
373
- let res = unsafe {
373
+ let ret = unsafe {
374
374
let args_p = to_exec_array ( args) ;
375
375
let env_p = to_exec_array ( envp) ;
376
376
@@ -384,7 +384,10 @@ pub fn posix_spawn<SA: AsRef<CStr>, SE: AsRef<CStr>>(
384
384
)
385
385
} ;
386
386
387
- Errno :: result ( res) ?;
387
+ if ret != 0 {
388
+ return Err ( Errno :: from_raw ( ret) ) ;
389
+ }
390
+
388
391
Ok ( Pid :: from_raw ( pid) )
389
392
}
390
393
@@ -399,7 +402,7 @@ pub fn posix_spawnp<SA: AsRef<CStr>, SE: AsRef<CStr>>(
399
402
) -> Result < Pid > {
400
403
let mut pid = 0 ;
401
404
402
- let res = unsafe {
405
+ let ret = unsafe {
403
406
let args_p = to_exec_array ( args) ;
404
407
let env_p = to_exec_array ( envp) ;
405
408
@@ -413,6 +416,9 @@ pub fn posix_spawnp<SA: AsRef<CStr>, SE: AsRef<CStr>>(
413
416
)
414
417
} ;
415
418
416
- Errno :: result ( res) ?;
419
+ if ret != 0 {
420
+ return Err ( Errno :: from_raw ( ret) ) ;
421
+ }
422
+
417
423
Ok ( Pid :: from_raw ( pid) )
418
424
}
Original file line number Diff line number Diff line change 1
- use std:: ffi:: CString ;
2
-
1
+ use super :: FORK_MTX ;
3
2
use nix:: spawn:: { self , PosixSpawnAttr , PosixSpawnFileActions } ;
4
3
use nix:: sys:: signal;
5
4
use nix:: sys:: wait:: { waitpid, WaitPidFlag , WaitStatus } ;
5
+ use std:: ffi:: CString ;
6
6
7
7
#[ test]
8
8
fn spawn_true ( ) {
9
+ let _guard = FORK_MTX . lock ( ) ;
10
+
9
11
let bin = & CString :: new ( "true" ) . unwrap ( ) ;
10
12
let args = & [
11
13
CString :: new ( "true" ) . unwrap ( ) ,
@@ -32,6 +34,8 @@ fn spawn_true() {
32
34
33
35
#[ test]
34
36
fn spawn_sleep ( ) {
37
+ let _guard = FORK_MTX . lock ( ) ;
38
+
35
39
let bin = & CString :: new ( "sleep" ) . unwrap ( ) ;
36
40
let args = & [ CString :: new ( "sleep" ) . unwrap ( ) , CString :: new ( "30" ) . unwrap ( ) ] ;
37
41
let vars: & [ CString ] = & [ ] ;
You can’t perform that action at this time.
0 commit comments