Что должен делать foo.exe и откуда вы знаете, что он не получает параметр командной строки / build? Если вы сделаете info run
, вы получите:
Windows programs are either GUI programs or console programs. When
started console programs will either attach to an existing console
or create a new one. GUI programs can never attach to an exiting con-
sole. There is no way to attach to an existing console but hide it if
started as GUI program.
run will do this for you. It works as intermediate and starts a pro-
gram but makes the console window hidden.
Последний бит важен - он скрывает окно консоли. Итак, вы увидите что-то вроде этого:
</cygdrive/d/sandbox> $ run ls -la
</cygdrive/d/sandbox> $
но если вы запустите это вместо этого, вы увидите что-то другое:
</cygdrive/d/sandbox> $ cat foo.lst
cat: foo.lst: No such file or directory
</cygdrive/d/sandbox> $ run ls -la >foo.lst
</cygdrive/d/sandbox> $
</cygdrive/d/sandbox> $ cat foo.lst
total 9272280
drwx------+ 15 jcasadonte ???????? 0 Feb 7 10:39 .
drwxrwxr-x+ 14 Administrators SYSTEM 0 Feb 7 00:44 ..
-rwx------+ 1 jcasadonte ???????? 26300 Apr 10 2006 ATT01779.jpg
[...etc...]
Первая команда выполняется, но печатается в несуществующем окне консоли.
ПРИМЕЧАНИЕ. Я бы сделал пример с интерпретатором команд DOS, как вы, похоже, пытаетесь это сделать, но XP cmd.exe неправильно обрабатывает '>' и передает его run
ls
.