#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <pthread.h>
void* myfunc(void* arg)
{
printf("child pthread id: %lu\n", pthread_self());
if((int*)arg == (int*)1)
{
printf("new thread return!\n");
return ((void*)1);
}
if((int*)arg == (int*)2)
{
printf("new thread exit!\n");
exit(2);
}
if((int*)arg == (int*)3)
{
printf("new thread pthread_exit!\n");
pthread_exit((void *)3);
}
}
int main(int argc, const char* argv[])
{
pthread_t thid;
if(argc < 2)
{
fprintf(stderr, "Usage %s <1 2 3>\n", argv[0]);
return -1;
}
int ret = pthread_create(&thid, NULL, myfunc, (void*)(atoi(argv[1])));
if(ret != 0)
{
printf("error number: %d\n", ret);
printf("error information: %s\n", strerror(ret));
}
printf("parent pthread id: %lu\n", pthread_self());
sleep(1);
return 0;
}
测试结果
