Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows cmd redirect subcommand output to file

I am trying to debug an application using cuda-memcheck. What I want to do is to redirect output from my app to one file, but on the other hand, redirect stdout and stderr of the cuda-memcheck into another file. But I cannot get it working. This:

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

does absolutely nothing. But if I delete the redirection inside the quotes (ignoring my app output), it executes. So the question is, how to redirect subcommand's stdout?

like image 299
Jofo Avatar asked May 18 '26 17:05

Jofo


1 Answers

According to your comment on cuda-memcheck's behavior, you could use the following command.

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

Edit

Here's my test on CentOS. It may work for Win32 console application but not for Win32 application.

a.cu

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

Compile command:

$ nvcc -O3 -o a a.cu 

Run command:

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

Result files:

$ 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!
like image 118
kangshiyin Avatar answered May 21 '26 14:05

kangshiyin