http://www.cnblogs.com/no7dw/archive/2012/09/27/2705847.html
During the time I use standalone cross compliers to build my system, I find there is NO pthread_cancel in pthread.h (/home/dengwei/standalone-toolchain/sysroot/usr/include/pthread.h).
Shocked by that, but here comes the solution, by using pthread_kill to send a signal , and adding a signal handler :
#include#include #include #include #include #include #include pthread_t pid;void handle_quit(int signo){ printf("in qq handle sig %d \n", signo); pthread_exit(NULL); }void* test(void *arg){ signal(SIGQUIT,handle_quit ); for(int i=0;i<100;i++) { printf("in pthread test \n"); sleep(1); }}int main(void){ printf("begin \n"); pthread_create(&pid, NULL , test, NULL); sleep(3); if(pthread_kill(pid, 0)!= ESRCH) { printf("thread %d exists!\n", pid); pthread_kill(pid, SIGQUIT);// pthread_exit(NULL);//this won't work printf("after kill\n"); } sleep(1); printf("exit in main\n");}