|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
I spent some time poking around in Config, but so far this is the the
only thing I've found that works: begin puts 'this is a test' # here is ruby rescue # here is rubyw end And I really don't love the side effect when using ruby. Please tell me there is a better way. Thanks, -- Joe Swatosh |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Sat, May 10, 2008 at 6:59 PM, Joe Swatosh <joe.swatosh@gmail.com> wrote:
> I spent some time poking around in Config, but so far this is the the > only thing I've found that works: > > begin > puts 'this is a test' > # here is ruby > rescue > # here is rubyw > end > > And I really don't love the side effect when using ruby. Please tell > me there is a better way. > > Thanks, > -- > Joe Swatosh > > As you've found out, stdout doesn't work under rubyw because all three usual streams (stdout, stdin and stderr) are closed in a Windows exe. I don't have a Window box handy to test, but you could try checking the value of STDOUT under rubyw - it's probably nil or something like that or you may get .eof? == true. Only a heuristic, but should serve to distinguish between your two use cases. Regards, Sean |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Sean O'Halpin wrote:
> I don't have a Window box handy to test, but you could try checking > the value of STDOUT under rubyw - it's probably nil or something like > that or you may get .eof? == true. Alternatively you could check for STDOUT.closed? or !STDOUT.tty? One of those three should work at least. HTH, Sebastian -- Jabber: sepp2k@jabber.org ICQ: 205544826 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Hi,
At Sun, 11 May 2008 02:59:07 +0900, Joe Swatosh wrote in [ruby-talk:301402]: > I spent some time poking around in Config, but so far this is the the > only thing I've found that works: It depends on what you want to know. If it is a) whether running with or without a console window, you can't open "CONIN$" and "CONOUT$" without it. begin open("CONIN$") {} # here is ruby rescue # here is rubyw end b) whether running with opened STDIN/STDOUT/STDERR, STDIN.stat and so on fail with EBADF if it is not opened. c) or, whether running executable is linked in GUI mode or CUI mode, you might have to parse the exe header. (imagehlp.dll or something may be needed.) -- Nobu Nakada |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On Sun, May 11, 2008 at 8:06 AM, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
> Hi, > > At Sun, 11 May 2008 02:59:07 +0900, > Joe Swatosh wrote in [ruby-talk:301402]: > > I spent some time poking around in Config, but so far this is the the > > only thing I've found that works: > > It depends on what you want to know. If it is > > a) whether running with or without a console window, you can't > open "CONIN$" and "CONOUT$" without it. > > begin > open("CONIN$") {} > # here is ruby > rescue > # here is rubyw > end > > b) whether running with opened STDIN/STDOUT/STDERR, STDIN.stat > and so on fail with EBADF if it is not opened. > > c) or, whether running executable is linked in GUI mode or CUI > mode, you might have to parse the exe header. (imagehlp.dll > or something may be needed.) > > -- > Nobu Nakada > > Thanks Sean. I should have mentioned that testing for defined?, nil?, and eof? weren't ful. Thanks Sebastian. No joy on .tty? or .closed? either. Nobu rocks again! It is b) We are using some gems that might puts or warn when they are loaded, so when running under rubyw we are planning to redirect them to a log file, but we don't want to mess with anything when running under ruby. Thanks again everyone. -- Joe |
|
![]() |
| Outils de la discussion | |
|
|