Я пытаюсь создать процесс, который выполняет системную команду, в то время как моя собственная программа все еще продолжается, и два процесса будут выполняться параллельно. Я работаю над 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;
}
[ОБНОВЛЕНИЕ]
Спасибо за комментарии ваших парней. Теперь моя программа выглядит так. Все работает нормально, кроме как в конце, я должен нажать 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;
}