Создание дочернего процесса и передача управления родителю

Модератор: Модераторы разделов

BratSinot
Сообщения: 812
ОС: Slackware64

Создание дочернего процесса и передача управления родителю

Сообщение BratSinot »

Доброго времени суток!

Создаю я значит дочерний процесс:

Код: Выделить всё

 if (!fork()) execvp(tmp2[0], tmp2);

Как создать дочерний процесс как самостоятельный? В смысле если я запущу какой-нибудь FireFox или XTerm, то они запустяться и не закроются. А если я выполню:

Код: Выделить всё

xterm -e htop

То XTerm открывается и моментально закрывается.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Создание дочернего процесса и передача управления родителю

Сообщение Ism »

есть функция system http://linux.die.net/man/3/system

вот мои мучения Решено: Не завершать потомка при завершении родителя
написано на паскале, но разницы нет ? Так как функции стандартные

можно запускать через forkpty , у меня работает безотказно
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: Создание дочернего процесса и передача управления родителю

Сообщение BratSinot »

Ism писал(а):
27.10.2011 18:59
есть функция system http://linux.die.net/man/3/system

вот мои мучения Решено: Не завершать потомка при завершении родителя
написано на паскале, но разницы нет ? Так как функции стандартные

можно запускать через forkpty , у меня работает безотказно

system() отпадает сразу, ибо он wait() использует, а второе посмотрю.

Я просто epic fail ходячий, делал я это в GTK, а конкретно в сигнале кнопки. А оно-же там по хитрому, поэтому и не работало, а сейчас просто вызываю gtk_main_quit() и тупо после gtk_main() вставляю свой код, без изменений...
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Создание дочернего процесса и передача управления родителю

Сообщение eddy »

BratSinot писал(а):
29.10.2011 21:12
Я просто epic fail ходячий, делал я это в GTK, а конкретно в сигнале кнопки. А оно-же там по хитрому, поэтому и не работало, а сейчас просто вызываю gtk_main_quit() и тупо после gtk_main() вставляю свой код, без изменений...

Так бы и сказали сразу, что в GTK. У него же "псевдоклассы" работают как отдельные потоки, так что у вас просто завершался поток - и все.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5486
ОС: Gentoo

Re: Создание дочернего процесса и передача управления родителю

Сообщение /dev/random »

eddy писал(а):
31.10.2011 09:08
У него же "псевдоклассы" работают как отдельные потоки

Э? Кто вам такое сказал?
Спасибо сказали:
BratSinot
Сообщения: 812
ОС: Slackware64

Re: Создание дочернего процесса и передача управления родителю

Сообщение BratSinot »

/dev/random писал(а):
31.10.2011 14:39
eddy писал(а):
31.10.2011 09:08
У него же "псевдоклассы" работают как отдельные потоки

Э? Кто вам такое сказал?

Судя по его поведению там происходит что-то подобное. Как минимум есть поток для gtk_main.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5486
ОС: Gentoo

Re: Создание дочернего процесса и передача управления родителю

Сообщение /dev/random »

BratSinot писал(а):
31.10.2011 14:44
Судя по его поведению там происходит что-то подобное. Как минимум есть поток для gtk_main.

Запускаете, к примеру, geeqie. Запускаете htop. Видите в htop, что geeqie работает в одном потоке.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Создание дочернего процесса и передача управления родителю

Сообщение eddy »

/dev/random писал(а):
31.10.2011 14:39
Э? Кто вам такое сказал?

Если вы запускаете немодальное окно, оно идет отдельным потоком, в отличие от модального, прерывающего выполнение родительского потока.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5486
ОС: Gentoo

Re: Создание дочернего процесса и передача управления родителю

Сообщение /dev/random »

eddy писал(а):
31.10.2011 15:58
Если вы запускаете немодальное окно, оно идет отдельным потоком, в отличие от модального, прерывающего выполнение родительского потока.

Запускаете geeqie; выбираете файл -> новое окно (можно несколько раз); запускаете htop; видите, что geeqie работает в одном потоке.

Главный цикл gtk принимает события иксов, относящиеся ко всем окнам и виджетам, и вызывает функции-обработчики в порядке поступления событий. Всё в одном потоке. И в случае модальных окон, кстати, то же самое, просто _некоторые_ события "заблокированного" окна начинают игнорироваться. Но не все. К примеру, XExposeEvent по-прежнему обрабатывается.
Спасибо сказали: