Emil Ong <onge / mcs.anl.gov> wrote: > Does the Kernel exec method support passing environment > variables? Something akin to execve()? It doesn't. Kernel::syscall might be an alternative. ----- % grep execve /usr/include/sys/syscall.h #define SYS_execve 59 % man execve ... int execve(const char *path, char *const argv[], char *const envp[]) ----- ruby version ----- % cat ve.rb print "FOO=",ENV['FOO']," BAR=",ENV['BAR'],"\n" % cat sc.rb path = "./ruby-1.6.4/ruby" argv = [ "ruby", "ve.rb" ] envp = [ "FOO=123", "BAR=456" ] syscall( 59, path, argv.pack("p*"), envp.pack("p*") ) % ./ruby-1.6.4/ruby sc.rb FOO=123 BAR=456 ----- perl version ----- % cat ve.pl print "FOO=",$ENV{'FOO'}," BAR=",$ENV{'BAR'},"\n"; % cat sc.pl $path = "/usr/bin/perl"; @argv = ( "perl", "ve.pl" ); @envp = ( "FOO=123", "BAR=456" ); syscall( 59, $path, pack("p*", @argv), pack("p*", @envp) ); % perl sc.pl FOO=123 BAR=456 -- Shusaku