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 leer una línea desde la terminal y luego pasarla a través del comando exec a otro programa en C++?

Estoy escribiendo un programa en C++ que lee texto desde la línea de comandos y luego lo pasa a otro programa que utiliza este texto.

Actualmente, estoy leyendo el texto en el programa 1 de esta manera:

std::string line;
std::getline(std::cin, line);

Luego, estoy usando forks para abrir un proceso hijo y usando el comando execl para ejecutar el programa 2. Ahora no sé cómo hacer que el programa 2 lea este texto y lo utilice.

pid_t pid = fork();
if (pid < 0) {
perror(“Fork failed”);
exit(1);
}else if (pid == 0) {
// Ejecuta rgen aquí después de que el padre haya terminado
execl(“./program2″,”.program2″, NULL);

}

El código anterior funciona y ejecuta el programa 2. Sin embargo, no sé cómo pasar el texto leído desde la terminal.

Este es el código completo:

int main(int argc, const char * argv[]) {

std::string line;
std::getline(std::cin, line);

pid_t pid = fork();
if (pid < 0) {
perror(“Fork failed”);
exit(1);
}else if (pid == 0) {
execl(“.program2″,”.program2″, NULL);

}

return 0;
}

Cualquier ayuda será apreciada. Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes pasar el texto leído desde la terminal al proceso hijo utilizando el comando execl con la variable line como argumento. Por ejemplo:


    execl("./program2",".program2", line.c_str(), NULL);

    Esto pasará la variable line al proceso hijo, el cual puede ser utilizado por el programa 2.

Comments are closed.