在我的main()
中,我创建了一个名为startup()
的线程,该线程应该初始化所有内容并启动一个名为callback()
的新线程,该线程应该处理I / O和东西。我的问题是callback()永远不会退出,它似乎处于循环中,当我按 Ctrl + C 时,它退出并最终执行放在其他线程中的代码。我无法弄清楚什么不能正常工作,所以我希望得到一些帮助。
void *startup()
{
/*... SOME OTHER CODE FOR CONNECTION OVER NETWORK... */
if ((thread_op_status = pthread_create(&callback_tid, (void *) 0,
callback, (void *) 0)) != 0)
{
if (cc.debug)
{
fprintf(stderr, "Errore #%d - pthread_create()\n", errno);
}
set_global_error(&error_flag, CLIENT_INTERNAL_ERR);
pthread_exit((void *) 0);
}
if ((thread_op_status = pthread_join(callback_tid, (void *) 0)) != 0)
{
if (cc.debug)
{
fprintf(stderr, "Errore #%d - pthread_join()\n", errno);
}
set_global_error(&error_flag, CLIENT_INTERNAL_ERR);
pthread_exit((void *) 0);
}
pthread_exit((void *) 0);
}
void *callback()
{
int access_granted = 0;
int action;
fprintf(stdout, "Seleziona: ");
scanf("%d", &action);
if (action == LOG)
{
access_granted = action1();
}
else if (action == ABT)
{
access_granted = action2();
}
else
{
fprintf(stderr, "Invalid choice.\n");
}
pthread_exit((void *) 0);
}