相关疑难解决方法(0)

如何将cin和cout重定向到文件?

我怎样才能重定向cinin.txtcoutout.txt

c++

125
推荐指数
5
解决办法
16万
查看次数

当Eclipse插件使用JNI时,如何将JNI控制台输出重定向到Eclipse Console视图?

我有一个Eclipse插件(A),它依赖于另一个插件(B).插件B只是一个jar包装器,它包含一个本机dll,并执行jni功能.鉴于此设置,我在A的Activator类的start方法中有以下代码:

MessageConsole jniConsole = new MessageConsole("Opereffa Output", null);
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { jniConsole });
ConsolePlugin.getDefault().getConsoleManager().showConsoleView(jniConsole);
MessageConsoleStream stream = jniConsole.newMessageStream();
System.setOut(new PrintStream(stream));
System.setErr(new PrintStream(stream));
Run Code Online (Sandbox Code Playgroud)

当插件A执行其功能时,System.out的任何使用实际上都会进入Eclipse中的控制台.但是JNI使用的本机代码也会写入输出流,这是我无法抓取的.在开发期间,JNI的输出转到Eclipse实例的控制台,该实例已启动包含插件的运行实例.

那么如何获取JNI输出并在控制台中显示?

eclipse console java-native-interface plugins redirect

24
推荐指数
1
解决办法
2029
查看次数

将函数打印的输出重定向到控制台到字符串

假设我们有一个函数将文本打印到控制台,我们无法控制源,但我们可以调用它.例如

void foo() {
    std::cout<<"hello world"<<std::endl; 
    print_to_console(); // this could be printed from anything
}
Run Code Online (Sandbox Code Playgroud)

是否可以将上述函数的输出重定向到字符串而不更改函数本身?

我不是想通过终端这样做的方法

c++ c++11

12
推荐指数
2
解决办法
8037
查看次数

将 CUDA printf 重定向到 C++ 流

问题陈述

我正在开发一个使用记录器进行调试的大型项目。因为我喜欢跟踪某些 CUDA 内核中发生的事情,所以我试图找到一种方法将printf我的 CUDA 内核重定向到一个stringstream(或任何流),然后可以将其转发到记录器。

可能的解决方案

我设法通过使用以下代码来做到这一点:

#include <cuda.h>
#include <stdio.h>
#include <unistd.h> // dup

#include <iostream>
#include <sstream> // stringstream
#include <fstream> // ofstream

char* output_file = "printf_redirect.log";

__global__ void printf_redirect(int* src, int* res)
{
    res[threadIdx.x] = threadIdx.x;
    printf("  %i: Hello World!\n", res[threadIdx.x]);
}

int main()
{
    using namespace std;

    const uint N = 2;

    // Note: dummy arrays are not actually used, but this should prevent the
    //       compiler from discarding the printf …
Run Code Online (Sandbox Code Playgroud)

c++ linux logging cuda io-redirection

6
推荐指数
1
解决办法
4009
查看次数