关于对进程、线程的返回状态的获取的理解

1、线程

创建线程的函数并不会返回线程的状态,线程状态的返回需要借助一个函数,即pthread_exit函数。这个函数可以把在线程内部把线程的退出信息发送到主线程。

而主线程需要用一段空间来存储这个子线程退出时候的状态,因此需要在主线程中提前定义一个变量 ,通过pthread_join函数,来接受到线程的退出状态。例如创建一个retval,使用这个变量来接受这个信息即可。

但是这个变量的类型怎么确定呢?,pthread_join 函数的定义者将这个函数的参数设置成了一个二级指针,如下,

int pthread_join(pthread_t thread, void **retval);

因此在主线程中应该定义一个一级指针,即需要将retval 定义成一个一级指针,而将这个一级指针的地址传递给pthread_join函数,便可以获取线程的退出状态了。

2、进程

同理,创建进程的函数也不会返回线程的状态,线程状态的返回需要借助一个函数,即exit函数。这个函数可以把在线程内部把线程的退出信息发送到父进程。

而主进程程需要用一段空间来存储这个子线程退出时候的状态,因此需要在主进程中提前定义一个变量 ,通过wait函数,来接受到线程的退出状态。例如创建一个val,使用这个变量来接受这个信息即可。

但是这个变量的类型怎么确定呢? wait函数的定义者将这个函数的参数设置成了一个一级指针,如下,

pid_t wait(int * status)

因此在父进程中应该定义一个 int变量,即需要将val定义成int型变量,而将这个int变量的地址传递给wait函数,便可以获取进程的退出状态了。

原文地址:https://www.cnblogs.com/lasnitch/p/12764148.html