Это некоторый ориентировочный код, который может помочь вам решить проблему в среде Linux.
pid_t pid = fork();
if (pid == -1) {
printf("fork: %s", strerror(errno));
exit(1);
} else if (pid > 0) {
/* parent process */
int i = 0;
int secs = 60; /* 60 secs for the process to finish */
while(1) {
/* check if process with pid exists */
if (exist(pid) && i > secs) {
/* do something accordingly */
}
sleep(1);
i++;
}
} else {
/* child process */
/* child logic here */
exit(0);
}
... эти 60 секунд не очень строги.Вы могли бы лучше использовать таймер, если вы хотите более строгое измерение времени.Но если ваша система не нуждается в критической обработке в реальном времени, все должно быть в порядке, как это.
exist(pid)
относится к функции, для которой вам нужен код, который просматривает proc/pid
, где pid
- процессid дочернего процесса.
При желании вы можете реализовать функцию exist(pid)
, используя другие библиотеки, предназначенные для извлечения информации из каталога /proc
, например procps