简体   繁体   中英

pthread error code 3025 (ENOENT) on the as400/IBM i?

When I have the following C source code, which is running on an IBM i Midrange, then I get a non-zero result from pthread_create , specifically 3025, which is ENOENT (No such path or directory), which doesn't make any sense to me. Anyone have any thoughts on what the error actually means in this context.

#define _MULTI_THREADED
#define _XOPEN_SOURCE 520
#include <pthread.h>
#include <stdio.h>
#include <errno.h>

void* workerThread(void* parm) {
    // Do some work here
    pthread_exit(NULL);
}

int main(int argc, char* argv[]) {
  pthread_t t;
  int rc;
  rc = pthread_create(&t, NULL, workerThread, NULL);
  if (rc != 0) {
    char *msg = strerror(errno);       
    perror("pthread_create failed");   
  }

  // Other code here

  return 0;
}

pthread_create doesn't set errno . You should be checking strerror of rc . http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_create.html

char *msg = strerror(rc);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM