У меня возникли проблемы с тем, чтобы заставить waitpid работать, может кто-нибудь объяснить, что не так с этим кодом?
#include <iostream>
#include <sys/wait.h>
#include <unistd.h>
using namespace std;
int main() {
string filename_memory;
decltype(fork()) pid;
if (!(pid = fork())) {
cout << "in child" << endl;
sleep(1);
}
else {
int status_child;
do {
waitpid(pid, &status_child, WNOHANG);
cout << "waiting for child to finish" << endl;
} while (!WIFEXITED(status_child));
cout << "child finished" << endl;
}
return 0;
}
waitpid
и прочитатьstatus_child
, только если возвращаемое значение равноpid
, что-то вродеif (ret == pid && WIFEXITED(status_child)) break;
- person Piotr Skotnicki   schedule 13.12.2015