es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo enviar un comando en un proceso con C++?

Tengo dos aplicaciones, la primera crea un proceso:

 if( !CreateProcess( myexe,   // No module name (use command line)
    NULL,        // Command line
    NULL,           // Handle del proceso no puede heredar
    NULL,           // Handle del hilo no puede heredar
    FALSE,          // Establecer herencia del handle como FALSO
    0,              // Sin banderas de creación
    NULL,           // Usar bloque de entorno del padre
    NULL,           // Usar directorio de inicio del padre
    &si,            // Puntero a estructura STARTUPINFO
    &pi )           // Puntero a estructura PROCESS_INFORMATION
) 

El nombre del proceso es myexe.exe:

myexe está esperando una entrada,

 #include <iostream>
using namespace std; 
int main()
{
    string value;

    while(true){
      cin>>value;
    }
}

¿Cómo enviar un valor de entrada en cpp?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para enviar un valor de entrada al proceso en C++, se puede utilizar la función CreateProcess para crear el proceso y luego usar la función WriteFile para enviar la entrada al proceso a través de su manejo de entrada estándar. Aquí hay un ejemplo de fragmento de código:

    #include <iostream>
    #include <windows.h>
    
    int main() {
        std::string input = "hola mundo\n"; // establecer el valor de entrada
        STARTUPINFO si = {};
        si.cb = sizeof(si);
        PROCESS_INFORMATION pi = {};
        if (CreateProcess("myexe.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
            HANDLE stdinHandle = GetStdHandle(STD_INPUT_HANDLE); // obtener el manejo de entrada estándar del proceso
            DWORD bytesWritten;
            WriteFile(stdinHandle, input.c_str(), input.size(), &bytesWritten, NULL); // escribir la entrada al proceso
            CloseHandle(stdinHandle); // cerrar el manejo de entrada
        }
        return 0;
    }
    

    En este ejemplo, primero establecemos el valor de entrada como “hola mundo\n”. Luego, creamos el proceso utilizando la función CreateProcess. A continuación, obtenemos el manejo de entrada estándar del proceso utilizando la función GetStdHandle y usamos la función WriteFile para escribir la entrada al proceso. Finalmente, cerramos el manejo de entrada utilizando la función CloseHandle.</windows.h>

Comments are closed.