2014-11-04 2 views
0

Я использую ImLib2 для периодического захвата изображений из приложения Xlib; и отправка поддельных ключей в окно приложения с помощью libxdo. Примерно через 10 минут моя программа командной строки завершается сообщением «Killed».Происхождение сообщения от Xlib: «Killed»

Я совершенно новый для программирования X. Кто-нибудь знает, откуда отправляется сообщение «Убитое»?

+0

Скомпилируйте все предупреждения и информацию об отладке ('gcc -Wall -Wextra -g'). Включить дампы «core» (возможно, с помощью 'ulimit -c'). Если вы получаете такой дамп, выполните анализ post mortem с помощью отладчика 'gdb'. –

ответ

0

Проблема, по-видимому, связана с тем, что не вызывал функцию imlib_free_image после каждого звонка до imlib_context_set_image. Внутренний цикл теперь выглядит примерно так:

Imlib_Image ii = imlib_create_image_from_drawable(0,x,y,w,h,1); 
imlib_context_set_image(ii); 
DATA32 *data = imlib_image_get_data(); 
examine_data(data); 
imlib_free_image(); 
1

Запускаете ли вы программу командной строки с завершающим «&», чтобы поместить ее в фоновом режиме? Если это так, вам, вероятно, необходимо также выполнить «nohup» перед командой. Если предположить, что программа называется grab.sh, вероятно, вы должны ссылаться на это следующим образом:

nohup grab.sh & 

Если вы делаете

echo TMOUT is $TMOUT 

и посмотреть

TMOUT is 600 

то, что происходит в вашей терминал, в котором вы вызываете команду, убивается после $TMOUT секунд бездействия, убивая ваш процесс. Команда nohup не позволит вашему процессу быть убитым.

+0

Увы, нет, я запускаю его на переднем плане без &. Раньше я не слышал о nohup, поэтому я все равно попробую ... – user2023370

Смежные вопросы