当前位置: 技术问答>linux和unix
关于callback函数问题
来源: 互联网 发布时间:2016-05-26
本文导语: 大家好, 我用gtk写了个界面,上面有个按钮 按钮的回调函数是 ============================= void on_button_clicked(){ FILE *mount_sda1 pthread_exit(&id) /*id 是上面一个线程的全局变量...
大家好,
我用gtk写了个界面,上面有个按钮
按钮的回调函数是
=============================
void
on_button_clicked(){
FILE *mount_sda1
pthread_exit(&id) /*id 是上面一个线程的全局变量名,而那个线程是用system()函数 去作cp动作 */
mount_sda1 = popen("mount /dev/sda1 /mnt", "r");
gtk_main_quit();
}
===============================
当我点击按钮的时候,按钮不没有想向的那样去终止"cp" 那个线程(我用top命令去看,他依然在作),而且界面一直卡在那不动,下面的mount 和 退出动作都没作。
我推测可能是因为callback函数的特殊性导致的,因为我写在其他函数中就没有问题。如果我想立即终止cp线程 动作,应该如何去作呢?还有造成不能立即退出线程的问题又是什么呢?
还请知道的大哥告诉下 谢谢
我用gtk写了个界面,上面有个按钮
按钮的回调函数是
=============================
void
on_button_clicked(){
FILE *mount_sda1
pthread_exit(&id) /*id 是上面一个线程的全局变量名,而那个线程是用system()函数 去作cp动作 */
mount_sda1 = popen("mount /dev/sda1 /mnt", "r");
gtk_main_quit();
}
===============================
当我点击按钮的时候,按钮不没有想向的那样去终止"cp" 那个线程(我用top命令去看,他依然在作),而且界面一直卡在那不动,下面的mount 和 退出动作都没作。
我推测可能是因为callback函数的特殊性导致的,因为我写在其他函数中就没有问题。如果我想立即终止cp线程 动作,应该如何去作呢?还有造成不能立即退出线程的问题又是什么呢?
还请知道的大哥告诉下 谢谢
|
你应该用 pthread_cancel(pthread_t thread) 终止其他线程
pthread_exit用来终止调用线程,也就是在线程用来终止自己
pthread_exit用来终止调用线程,也就是在线程用来终止自己