2014-11-04 74 views
0

我使用ImLib2从Xlib应用程序定期抓取图像;并使用libxdo将虚假keysignals发送到应用程序窗口。大约10分钟后,我的命令行程序终止并显示“Killed”消息。来自Xlib的消息的来源:“Killed”

我是X编程的新手。有谁知道“Killed”消息从哪里发出?

+0

编译所有警告和调试信息('gcc -Wall -Wextra -g')。启用'核心'转储(可能用'ulimit -c')。如果你得到这样的转储,使用'gdb'调试器进行事后分析。 – 2014-11-04 15:07:26

回答

0

这个问题似乎是因为在每次调用imlib_context_set_image后都没有调用imlib_free_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 2014-11-04 16:06:27