Russian Qt Forum
Сентябрь 25, 2024, 06:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess Qt4 Linux  (Прочитано 3543 раз)
mega_m
Гость
« : Октябрь 01, 2007, 18:41 »

qint64 pid;
QProcess::startDetached(QString("myprog"), QStringList() << "yo" , QDir::homePath(), &pid);

Новый процесс стартует, но значение переменной pid меньше на 2 реального значения pid программы.
Как это понять ?

Может из-за "On Unix, the started process will run in its own session and act like a daemon." ?
« Последнее редактирование: Октябрь 01, 2007, 18:45 от 6ap » Записан
Dodge
Гость
« Ответ #1 : Октябрь 05, 2007, 13:37 »

вопрос конечно интересный... в виндах все норм...
Записан
Mixolap
Гость
« Ответ #2 : Октябрь 06, 2007, 10:40 »

Процесс демонизации в Linux включает в себя два fork, отсюда реальный pid и на два больше.
Кстати, не факт что на два, если между форками еще процессы запускались, то будет больше чем два на количество других процессов.
Записан
mega_m
Гость
« Ответ #3 : Октябрь 07, 2007, 23:08 »

Mixolap. Вот реализация с помощью LinuxAPI

int status;
pid_t pid = fork();

if (pid > 0) {
   fprintf (f, "%i", pid);
   fclose (f);
   wait(&status);
} else {
   execlp("prog",....,NULL);
}

Так можно делать хоть до бесконечности. Это просто копия процесса.
pid прекрасно сохраняется и в дальнейшем по нему легко убить процесс.

Хочется кросс кода без #ifdef.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.465 секунд. Запросов: 20.