On Thu, 10 Apr 2008 23:08:40 -0500, Yang Zhang wrote: > Thanks for prompting me to provide some context. getpass() is a > standard POSIX function, described here: > > http://www.opengroup.org/pubs/online/7908799/xsh/getpass.html getpass() is not a POSIX anything. From the manpage: DESCRIPTION This function is obsolete. Do not use it. ... CONFORMING TO Present in SUSv2, but marked LEGACY. Removed in POSIX.1-2001. In theory, using Ruby/DL should work, like require 'dl/import' module LibC extend DL::Importable dlload 'libc.so.6' extern 'char *getpass( const char * prompt )' end In theory, theory and practice are the same. /usr/lib/ruby/1.8/dl/import.rb:126:in `symbol': can't find the symbol `getpass' (RuntimeError) from /usr/lib/ruby/1.8/dl/import.rb:145:in `import' from /usr/lib/ruby/1.8/dl/import.rb:61:in `extern' But this works: require 'dl' module LibC extend self LIB=DL.dlopen('libc.so.6') SYMS={ :getpass => LIB['getpass','SS'] } def getpass prompt r,rs = SYMS[:getpass].call prompt return r end end Again, don't use this. Use Highline instead. --Ken -- Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory. Department of Computer Science. Illinois Institute of Technology. http://www.iit.edu/~kbloom1/