Windows cmd перенаправить вывод подкоманды в файл

Я пытаюсь отладить приложение с помощью cuda-memcheck. Я хочу перенаправить вывод из моего приложения в один файл, но, с другой стороны, перенаправить stdout и stderr cuda-memcheck в другой файл. Но я не могу заставить его работать. Это:

cuda-memcheck "app.exe > stdout1.txt" > memcheck.log 2>&1

абсолютно ничего не делает. Но если я удаляю перенаправление внутри кавычек (игнорируя вывод моего приложения), оно выполняется. Итак, вопрос в том, как перенаправить стандартный вывод подкоманды?

1 ответ

Согласно вашему комментарию cuda-memcheckПоведение, вы можете использовать следующую команду.

cuda-memcheck --log-file memcheck.log app.exe >app.stdout.txt

редактировать

Вот мой тест на CentOS. Это может работать для консольного приложения Win32, но не для приложения Win32.

a.cu

#include <iostream>
int main () {
    std::cout<< "hello world to stdout!" <<std::endl;
    std::cerr<< "hello world to stderr!" <<std::endl;
    return 0;
}

Команда компиляции:

$ nvcc -O3 -o a a.cu 

Команда запуска:

$ cuda-memcheck --log-file mem.log a >a.stdout.log 2>a.stderr.log

Файлы результатов:

$ cat mem.log 
========= CUDA-MEMCHECK
========= ERROR SUMMARY: 0 errors

$ cat a.stdout.log 
hello world to stdout!

$ cat a.stderr.log 
hello world to stderr!
Другие вопросы по тегам