Win32 API功能封装
+ -

CreateProcess子进程管道输出重定向

2021-08-30 107 0

这里时子进程的输出重客向到一个一个文件中,适用于子进程为控制台输出的程序。

    SYSTEMTIME sys;
    GetLocalTime(&sys);

    SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES),NULL,TRUE };

    char name[512] = { 0 };
    sprintf_s(name, 512, "%4d-%02d-%02d %02d_%02d_%02d_%03d.txt", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);

    cmdOutput = CreateFileA(name,
        GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
        &sa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);


    if (cmdOutput == INVALID_HANDLE_VALUE)
    {
        ExitProcess(0);
        return 0;
    }


    PROCESS_INFORMATION pi;
    STARTUPINFO si = { sizeof(STARTUPINFO) };

    si.hStdInput = 0;
    si.hStdOutput = cmdOutput;
    si.dwFlags = STARTF_USESTDHANDLES;

    if (CreateProcess(L"audio_recoder.exe", NULL, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi))
    {
        WaitForSingleObject(pi.hProcess, INFINITE);
        CloseHandle(cmdOutput);
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
    }

0 篇笔记 写笔记

CreateProcess子进程管道输出重定向
这里时子进程的输出重客向到一个一个文件中,适用于子进程为控制台输出的程序。 SYSTEMTIME sys; GetLocalTime(&sys); SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES),NULL......
管道PIPE跨进程通讯
发送端#define EXAMP_PIPE L"\.\PIPE\EB3F2E4B_52E2_40F9_A17D_B4A2588F23AB" #define BUF_SIZE 4096void CPipeDlg::SendData(PUCHAR pData, ......
使用管道PIPE在内核与应用层通讯
什么是PIPE管道?在Windows编程中,数据重定向需要用到管道PIPE,管道是一种用于在进程间共享数据的机制,通常由两端组成,数据从一端流入则必须从令一端流出,也就是一读一写,利用这种机制即可实现进程间直接通信。管道的本质其实是一段共享内存区域,多数情况下管道是用于应用层之间的数据交换的,其实驱......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!