#include <pthread.h> int main(void) { int fd; int a(); int b[10]; pthread_create(&fd,NULL,a,NULL); pthread_join(fd,b); printf("%s",b); return 0; } a() { char a[]="asdf"; pthread_exit(a); } 帮我看看这段代码为什么pthread_exit(a) 不能将返回值返回到b数组,打印出的是乱码!
线程退出时是不是一定要用pthread_exit()来清空资源? 如果线程被意外终止,比如被 kill 了,这时线程怎么清空之前调用的资源的? 对了,这里说的进程线程都是在开发板跑的,貎似线程都变成进程了,因此可以用kill来杀
在主线程中创建了两个线程,线程的detach属性设置为pthread_CREATE_DETACHED,调用这两个线程的pthread_exit()的时候,打印显示线程并没有 退出,但是调用pthread_cancel()或者直接从线程函数返回则可以正常的退出线程,不知道大家有没有遇到这个问题,是什么原因
线程正常退出后(pthread_exit), 用pstack +进程PID,有如下的输出,看到线程的情况如下: 然后程序就死掉了。哪位高手能分析出是什么原因? -------------------------- thread# 312 -------------------- ff0db6fc _restorefsr (59c158, 0, 0, 0, 0, 0) + 8 -------------------------- thread# 313 -------------------- ff0db6fc _restorefsr (59c478, 0, 0, 0, 0, 0) + 8 -------------------------- thread# 314 --...
在一个线程函数里面直接return NULL和用pthread_exit(0)有什么不同? void * thread(void *arg) { 直接return NULL和用pthread_exit(0)有什么不同? }
exit(1)执行之后怎么就退出程序了?下面的程序还没有执行呢..
比如
if(....)
{
....
exit(1);//出错了,返回出错信息,但是怎么就不执行下面的while了呢?费解
}
while()
{ .....}
具体的程序如下.麻烦帮解释下.太有问题了...............
#include
小弟初学shell脚本,请教: 函数中exit 0 代表正常结束,但返回值为0,那么在判断中,应该算真还是算假? 比如 a ( ) { if [$1 -eq 0] exit 0 else exit 1 fi } a&&echo arg1 is zero 在这里如果$1为0,a在这个判断语句中算真还是假?弱智之处还请包涵
pthread有一个函数用来设置堆栈大小的:pthread_attr_setstacksize ,这个函数的是用来设置线程最小的堆栈大小,线程运行的时候,假如这个堆栈不够的时候,系统会增加堆栈大小,感觉好像这个函数没有什么作用?:em14:
看APUE的时候遇到了这样一个问题,把下面程序中的 _exit 换成 exit 以后,书上说运行结果只有一行:
before vfork
我试过以后发现用exit和用_exit结果一样:
befor vfork
var =7
不知道是为什么,请大虾指教!
#include