gpt4 book ai didi

C++ 在退出 WINAPI 之前将控制台输出保存到文本文件(无 MFC)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:46 24 4
gpt4 key购买 nike

我试图让我的程序在退出前将控制台应用程序的输出记录到一个文本文件中。这是一个启动控制台应用程序 (tool.exe) 的 GUI 程序。问题是我正在使用 CTRL + C 退出控制台应用程序。此控制台应用程序也无法更改。我已经尝试了几种方法来执行此操作,但似乎都不起作用 ( tool.exe > output.txt )。

谁能指出我采取哪种方法的正确方向?将不胜感激。

编辑:

文件已创建,但为空且未接收任何数据。不过,我注意到的是,如果我自己从命令行运行该工具,它就会起作用。例如。 c:\>tool.exe > output.txt 但是,当它从我的 GUI 应用程序执行时,它不起作用。

这是我用来执行该工具的代码:

    strcpy (tool, "\" start /D \"");
strcat (tool, toolLocation);
strcat (tool, "\" tool.exe > output.txt\"");
system (tool);

这将运行 tool.exe 并创建 output.txt 正常,但不会向文件输出任何内容。

编辑 2:

我认为实际发生的事情是因为我正在使用 start>output.txt 正在输出 start 而不是 工具.exe。这可以解释为什么它创建空文件。 Start 只是运行一个新的命令行,然后运行 ​​tool.exe。问题是,我现在该如何解决这个问题?

最佳答案

尝试:

#include <signal.h>
void signal_handlerkill(int sig)
{
//Do Soemthing
exit(1);
}

int main()
{
signal(SIGINT, signal_handlerkill); //Connect the interrupt signal (^C) to the function
//Do your code here
return 0;
}

如果这不起作用,我建议您查看 here .具体来说:

// crt_signal.c
// compile with: /c
// Use signal to attach a signal handler to the abort routine
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <tchar.h>

void SignalHandler(int signal)
{
printf("Application aborting...\n");
}

int main()
{
typedef void (*SignalHandlerPointer)(int);

SignalHandlerPointer previousHandler;
previousHandler = signal(SIGABRT, SignalHandler);

abort();
}

关于C++ 在退出 WINAPI 之前将控制台输出保存到文本文件(无 MFC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com