Masato Taruishi
taru****@users*****
2004年 9月 13日 (月) 13:10:13 JST
=================================================================== RCS file: demo/haviewer/lib/haviewer/ultrapossum.rb,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- demo/haviewer/lib/haviewer/ultrapossum.rb 2004/09/13 03:16:03 1.3 +++ demo/haviewer/lib/haviewer/ultrapossum.rb 2004/09/13 04:10:13 1.4 @@ -226,19 +226,40 @@ class EntryView < View def entry_update - open("|ldapmodify -x -h #{Conf["LDAPMASTER"]} -D #{Conf["ROOTDN"]} -w #{Conf["ROOTPW"]} 2>&1") { |io| - date=`sh -c 'LANG=C date'` - begin - io[0].puts <<EOF + + pw = IO::pipe + pe = IO::pipe + + pid = fork { + pw[1].close + STDIN.reopen(pw[0]) + pw[0].close + + pe[0].close + STDERR.reopen(pe[1]) + pe[1].close + + exec("ldapmodify -x -h #{Conf["LDAPMASTER"]} -D #{Conf["ROOTDN"]} -w #{Conf["ROOTPW"]}") + } + + pw[0].close + pe[1].close + + date=`sh -c 'LANG=C date'` + begin + pw[1].puts <<EOF dn: #{UltraPossumHost::monitored_entry} changetype: modify replace: description description: #{date} + EOF - rescue - end - @glade["entry_update_error_label"].set_text(io.read) - } + pw[1].close + rescue + end + @glade["entry_update_error_label"].set_text(pe[0].gets) + pe[0].close + Process.waitpid(pid) if $? != 0 @glade["entry_update_error"].show if $? != 0 end