Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pthread_cancel don';我不能在solaris下工作 #包括 #包括 #包括 #包括 字符a[]=“你好”; void*螺纹体(void*参数){ 而(1) printf(“%s\n”,参数); } int main(int argc,char*argv[]){ pthread\u t threadHello; int代码; pthread_create(&threadHello,NULL,thread_body,a); pthread_cancel(threadHello); pthread_退出(0); }_C_Pthreads_Solaris - Fatal编程技术网

pthread_cancel don';我不能在solaris下工作 #包括 #包括 #包括 #包括 字符a[]=“你好”; void*螺纹体(void*参数){ 而(1) printf(“%s\n”,参数); } int main(int argc,char*argv[]){ pthread\u t threadHello; int代码; pthread_create(&threadHello,NULL,thread_body,a); pthread_cancel(threadHello); pthread_退出(0); }

pthread_cancel don';我不能在solaris下工作 #包括 #包括 #包括 #包括 字符a[]=“你好”; void*螺纹体(void*参数){ 而(1) printf(“%s\n”,参数); } int main(int argc,char*argv[]){ pthread\u t threadHello; int代码; pthread_create(&threadHello,NULL,thread_body,a); pthread_cancel(threadHello); pthread_退出(0); },c,pthreads,solaris,C,Pthreads,Solaris,当我在Solaris 10(SunOS 5.10)下编译并运行它时,它不会停止。但是在Linux下它可以正常工作。根据POSIX,printf(以及所有stdio)可能是一个取消点。不需要这样做。我怀疑Solaris只是没有选择让它成为一个。您是否在此处尝试了另一个类似于睡眠的功能 如果您真的需要printf可取消,您可能需要实现自己的printf类函数作为dprintf的包装器,但是如果您依赖于stdio的内置锁定功能,printf(以及所有stdio),那么这将无法很好地工作可能是取消点。不

当我在Solaris 10(SunOS 5.10)下编译并运行它时,它不会停止。但是在Linux下它可以正常工作。

根据POSIX,
printf
(以及所有stdio)可能是一个取消点。不需要这样做。我怀疑Solaris只是没有选择让它成为一个。您是否在此处尝试了另一个类似于
睡眠
的功能


如果您真的需要
printf
可取消,您可能需要实现自己的
printf
类函数作为
dprintf
的包装器,但是如果您依赖于stdio的内置锁定功能,
printf
(以及所有stdio),那么这将无法很好地工作可能是取消点。不需要这样做。我怀疑Solaris只是没有选择让它成为一个。您是否在此处尝试了另一个类似于
睡眠
的功能


如果您确实需要
printf
可取消,您可能需要实现自己的
printf
类函数作为
dprintf
的包装器,但是如果依赖stdio的内置锁定功能,

pthread_cancel()的值是多少
return?您是否检查了目标线程的取消状态和类型?@kerrek sb是的,我阅读了linux和solaris下的手册页。@KingsIndian nothingchanged@AlexeyMatveev您是否检查了这些函数的返回值?它们都成功了吗?
pthread\u cancel()
返回了什么值?你检查过目标线程的取消状态和类型吗?@kerrek sb是的,我读过linux和solaris下的手册页。@KingsIndian什么都没有changed@AlexeyMatveev您是否检查了这些函数的返回值?他们都成功了?
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <string.h>

char a[]="Hello";

void * thread_body(void * param) {
        while(1)
                printf("%s\n", param);
}

int main(int argc,  char *argv[]) {
        pthread_t threadHello;
        int code;
        pthread_create(&threadHello,  NULL,  thread_body,  a);
        pthread_cancel(threadHello);
        pthread_exit(0);
}