Methods
Public Instance methods
[ show source ]
# File lib/phusion_passenger/utils.rb, line 1001
1001: def close_on_exec!
1002: end
[ show source ]
# File lib/phusion_passenger/utils.rb, line 997
997: def close_on_exec!
998: fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
999: end
Writes all of the strings in the components array into the given file descriptor using the +writev()+ system call. Unlike IO#write, this method does not require one to concatenate all those strings into a single buffer in order to send the data in a single system call. Thus, #writev is a great way to perform zero-copy I/O.
Unlike the raw writev() system call, this method ensures that all given data is written before returning, by performing multiple writev() calls and whatever else is necessary.
io.writev(["hello ", "world", "\n"])
[ show source ]
# File lib/phusion_passenger/utils.rb, line 973
973: def writev(components)
974: return PhusionPassenger::NativeSupport.writev(fileno, components)
975: end
Like #writev, but accepts two arrays. The data is written in the given order.
io.writev2(["hello ", "world", "\n"], ["another ", "message\n"])
[ show source ]
# File lib/phusion_passenger/utils.rb, line 980
980: def writev2(components, components2)
981: return PhusionPassenger::NativeSupport.writev2(fileno,
982: components, components2)
983: end
Like #writev, but accepts three arrays. The data is written in the given order.
io.writev3(["hello ", "world", "\n"],
["another ", "message\n"],
["yet ", "another ", "one", "\n"])
[ show source ]
# File lib/phusion_passenger/utils.rb, line 990
990: def writev3(components, components2, components3)
991: return PhusionPassenger::NativeSupport.writev3(fileno,
992: components, components2, components3)
993: end