Как создать дочерний процесс как самостоятельный? В смысле если я запущу какой-нибудь FireFox или XTerm, то они запустяться и не закроются. А если я выполню:
можно запускать через forkpty , у меня работает безотказно
system() отпадает сразу, ибо он wait() использует, а второе посмотрю.
Я просто epic fail ходячий, делал я это в GTK, а конкретно в сигнале кнопки. А оно-же там по хитрому, поэтому и не работало, а сейчас просто вызываю gtk_main_quit() и тупо после gtk_main() вставляю свой код, без изменений...
Я просто epic fail ходячий, делал я это в GTK, а конкретно в сигнале кнопки. А оно-же там по хитрому, поэтому и не работало, а сейчас просто вызываю gtk_main_quit() и тупо после gtk_main() вставляю свой код, без изменений...
Так бы и сказали сразу, что в GTK. У него же "псевдоклассы" работают как отдельные потоки, так что у вас просто завершался поток - и все.
Если вы запускаете немодальное окно, оно идет отдельным потоком, в отличие от модального, прерывающего выполнение родительского потока.
Запускаете geeqie; выбираете файл -> новое окно (можно несколько раз); запускаете htop; видите, что geeqie работает в одном потоке.
Главный цикл gtk принимает события иксов, относящиеся ко всем окнам и виджетам, и вызывает функции-обработчики в порядке поступления событий. Всё в одном потоке. И в случае модальных окон, кстати, то же самое, просто _некоторые_ события "заблокированного" окна начинают игнорироваться. Но не все. К примеру, XExposeEvent по-прежнему обрабатывается.