Estoy tratando de engendrar un proceso que ejecuta un comando del sistema, mientras mi propio programa continúa y dos procesos se ejecutarán en paralelo. Estoy trabajando en Linux.usando exec para ejecutar un comando del sistema en un nuevo proceso
Miré en línea y parece que debería usar la familia exec(). Pero no funciona tan bien como esperaba. Por ejemplo, en el siguiente código, solo veo impreso "antes", pero no "hecho".
Tengo curiosidad si estoy emitiendo algo?
#include <unistd.h>
#include <iostream>
using namespace std;
main()
{
cout << "before" << endl;
execl("/bin/ls", "/bin/ls", "-r", "-t", "-l", (char *) 0);
cout << "done" << endl;
}
[ACTUALIZACIÓN]
Gracias por sus comentarios chicos. Ahora mi programa se ve así. Todo funciona bien, excepto al final, tengo que presionar enter para terminar el programa. No estoy seguro de por qué tengo que presionar la última entrada?
#include <unistd.h>
#include <iostream>
using namespace std;
main()
{
cout << "before" << endl;
int pid = fork();
cout << pid << endl;
if (pid==0) {
execl("/bin/ls", "ls", "-r", "-t", "-l", (char *) 0);
}
cout << "done" << endl;
}
su principal debería ser 'int main' y al final se debe añadir un' return 0; ' la forma en que lo tienes, probablemente, su compilador llenará al final, y agregará "presione cualquier botón para continuar" al final – akaltar