39 lines
496 B
C
39 lines
496 B
C
#include <pthread.h>
|
|
#include <utf.h>
|
|
#include <fmt.h>
|
|
|
|
pthread_key_t key;
|
|
|
|
void
|
|
pexit(void *v)
|
|
{
|
|
int s;
|
|
|
|
pthread_setspecific(key, (void*)1);
|
|
switch(fork()){
|
|
case -1:
|
|
fprint(2, "fork: %r\n");
|
|
case 0:
|
|
_exit(0);
|
|
default:
|
|
wait(&s);
|
|
}
|
|
pthread_exit(0);
|
|
}
|
|
|
|
int
|
|
main(int argc, char *argv[])
|
|
{
|
|
int i;
|
|
pthread_t pid;
|
|
|
|
pthread_key_create(&key, 0);
|
|
for(i=0;; i++){
|
|
print("%d\n", i);
|
|
if(pthread_create(&pid, 0, pexit, 0) < 0){
|
|
fprint(2, "pthread_create: %r\n");
|
|
abort();
|
|
}
|
|
}
|
|
}
|