Future-proof the build process fork/wait
This commit is contained in:
		
							parent
							
								
									809c804499
								
							
						
					
					
						commit
						fcb9c4d5fb
					
				@ -490,7 +490,7 @@ class FormulaInstaller
 | 
			
		||||
    # to remain open in the child process.
 | 
			
		||||
    args << { write => write } if RUBY_VERSION >= "2.0"
 | 
			
		||||
 | 
			
		||||
    fork do
 | 
			
		||||
    pid = fork do
 | 
			
		||||
      begin
 | 
			
		||||
        read.close
 | 
			
		||||
        exec(*args)
 | 
			
		||||
@ -501,9 +501,9 @@ class FormulaInstaller
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    ignore_interrupts(:quietly) do # the fork will receive the interrupt and marshall it back
 | 
			
		||||
    ignore_interrupts(:quietly) do # the child will receive the interrupt and marshal it back
 | 
			
		||||
      write.close
 | 
			
		||||
      Process.wait
 | 
			
		||||
      Process.wait(pid)
 | 
			
		||||
      data = read.read
 | 
			
		||||
      read.close
 | 
			
		||||
      raise Marshal.load(data) unless data.nil? or data.empty?
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user