| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [glib] g_spawn_async_with_pipes не ясно |
| Автор: null56 13.4.2011, 22:50 | ||||||
| Всем привет С глибом начал работать недавно, но вот нарвался на непонятный для себя момент Задача: запустить внешнее приложение, передать ему какую - то команду (на его stdin), дождаться ответа (stdout) 1) запускаю внешнее приложение вот так
2) отправляю команду (она доходит)
3) пытаюсь прочитать stdout, начинаю висеть, пока приложение на другой стороне не завершит работу
в общем, вопрос, скорее из интереса, почему мы висим пытаясь прочитать из stdout дочернего процесса? при том запись в stdin проходит, проверил подскажите пожалуйста почему так происходит? и как надо правильно поступатЬ, если я допустил ошибку (интересует синхронный режим на блокируемых пайпах)... |
| Автор: null56 13.4.2011, 23:57 | ||
| мда.... ответ кеширование на другой стороне, поэтому и ждем, поэтому при завершении процесса ядро передает наконец мои данные.. обидно... ведь на пайпы мы повлиять никак не можем, задать что - то типа O_SYNC или O_DIRECT.... надо подумать Добавлено через 6 минут и 20 секунд зараза и повлиять на него в данном контексте нельзя, ибо функция перед возвратом закрывает дескриптор, другую сторону пайпа отывок strace
|