¿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.
davy.ai
Puedes pasar el texto leído desde la terminal al proceso hijo utilizando el comando
execl
con la variableline
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.