Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пробую использовать glib, первые проблемы 
:(
    Опции темы
vase
Дата 2.10.2008, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.7.2008

Репутация: нет
Всего: нет



Пробую запустить приложение с аргументами, судя по проверкам spawn происходит нормально, но вот функция, которая должна выполняться exec_read - не выполняется и ничего на экран не выводится. В чем может быть ошибка?

Код

GMainLoop *main_loop;
GMainContext *main_context;
main_context = g_main_context_new ();
main_loop = g_main_loop_new (main_context, TRUE);

char *argv[3];
argv[0] = "/etc/init.d/sshd";
argv[1] = "status";
argv[2] = NULL;
exec (argv);


gboolean exec (gchar **argv) {
        GIOChannel *channel_out;
        GIOChannel *channel_in;
        GIOChannel *channel_err;

        gint std_in;
        gint std_out;
        gint std_err;
        guint std_in_out;
        guint std_in_err;
        GError *error = NULL;

        channel_out = g_io_channel_unix_new(1);
        channel_err = g_io_channel_unix_new(2);

        if (g_spawn_async_with_pipes ("/", argv, NULL,
G_SPAWN_LEAVE_DESCRIPTORS_OPEN, NULL, NULL, NULL, &std_in, &std_out,
&std_err, &error)) {
                std_in_out = g_io_add_watch_full(channel_out,
G_PRIORITY_LOW, GIOCondition (G_IO_IN | G_IO_OUT | G_IO_PRI | G_IO_ERR |
G_IO_HUP | G_IO_NVAL), exec_read, NULL, NULL);
                std_in_err = g_io_add_watch_full(channel_err,
G_PRIORITY_LOW, GIOCondition (G_IO_IN | G_IO_OUT | G_IO_PRI | G_IO_ERR |
G_IO_HUP | G_IO_NVAL), exec_read, NULL, NULL);
                std::cerr << "spawn!" << std::endl;
        }
        else {
                std::cerr << "FUCK" << std::endl;
                std::cerr << error->message << std::endl;
        }
        return 0;
}


gboolean exec_read (GIOChannel *iochannel, GIOCondition condition,
gpointer data) {
        gchar *buffer = NULL;
        gsize bytes = 0;
        GError *error = NULL;
        g_io_channel_set_encoding (iochannel, NULL, NULL);

        if (condition ) {
                if (g_io_channel_read_to_end (iochannel, &buffer,
&bytes, &error) == G_IO_STATUS_NORMAL ) {
                        std::cerr << buffer << std::endl;
                        std::cerr << "error" << std::endl;
                        std::cerr << error->message << std::endl;
                }
                else {
                        std::cerr << "error" << std::endl;
                        std::cerr << error->message << std::endl;
                        std::cerr << buffer << std::endl;
                }
        }
        g_io_channel_shutdown (iochannel, TRUE, NULL);
        g_io_channel_unref (iochannel);
        return 0;
}


PM MAIL WWW ICQ Jabber   Вверх
vase
Дата 9.10.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.7.2008

Репутация: нет
Всего: нет



понял ошибку свою. забыл сделать main_loop, и тп. кому интересно, могу скинуть сюда код.
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.