Использование exec для выполнения системной команды в новом процессе

Я пытаюсь создать процесс, который выполняет системную команду, в то время как моя собственная программа все еще выполняется, и два процесса будут выполняться параллельно. Я работаю над linux.

Я поискал в Интернете и, похоже, мне следует использовать семейство exec (). Но это не так, как я ожидал. Например, в следующем коде я вижу только напечатанное «до», но не «готово».

Интересно, изучаю ли я что-нибудь?

Интересно, изучаю ли я что-нибудь?

Интересно, изучаю ли я что-нибудь?

#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;
}

[UPDATE]

Thank you for your guys comments. Now my program looks like this. Everything works fine except at the end, I have to press enter to finish the program. I am not sure why I have to press the last enter?

#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;
}
17
задан Vendetta 12 April 2011 в 07:08
поделиться