ZlR has asked for the wisdom of the Perl Monks concerning the following question:
I have to port to Windows, and in Perl, a set of ksh scripts. These scripts use redirections to one unique error file for different commands. That is they do things like :
Every command launched is a different script or binary. They can be system commands or written by others persons, some may run in the background for a long time. The number and nature of these command is not controlled by me and will vary. They should run at the same time.cmd_uno >> cmd_uno_out 2>> general_err & cmd_dos >> cmd_dos_out 2>> general_err &
Is this single file redirection not at all possible with windows ? I tried several approaches :
- redirection through a cmd shell
- passing the filename as a parameter before spawning
- passing already opened IO::File filehandles
Everytime I get a "File already used by another process" error. It seems strange that something so easy with Unix is impossible with windows, so maybe i'm missing something ? Is this a well known problem ? What are the workarounds ? Is it done with other languages ?
Another problem is that i work with Perl 5.6 and so i do not have Win32::Job. This module allows to redirect STDERR and STDOUT of the spawned process to files specified at launch time. Since i cannot do this I have to impose that the commands are either doing the redirections themselves or launched through a cmd shell that does the redirections for them.
Add these two problems and you see that i have to :
I must add that i cannot use other modules than pure perl ones or the ones that are in the standard 5.6 distribution
I already have some code running, but maybe someone here can give me ideas on trying to make this as clean as possible. What do you think ?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Win32 multiple process and single file redirection
by pelagic (Priest) on Jan 21, 2005 at 10:30 UTC | |
by ZlR (Chaplain) on Jan 21, 2005 at 13:24 UTC | |
by pelagic (Priest) on Jan 21, 2005 at 13:56 UTC | |
by Frantz (Monk) on Jan 25, 2005 at 16:39 UTC |