syscall (SYS_gettid) возвращает -1 и errno установлен в 22 (EINVAL)

У нас был этот кусок кода C ++, который работал нормально, где Системный вызов (SYS_gettid) вернул бы текущий идентификатор потока правильно. Недавно я заметил, возвращаемое значение -1.

Я понимаю, что syscall возвращает -1, если операция завершилась неудачно, и соответствующая ошибка установлена ​​в errno в errno.h. Поэтому я попробовал следующее, чтобы выяснить, что может быть неудачным.

errno = 0;
long jtid = syscall(SYS_gettid);
int errsv = errno;
stream<< "HERE1::" << jtid << "::" << errsv;

Это возвращалось

HERE1::-1::22

Поскольку 22 определяется как#define EINVAL 22 / * Неверный аргумент * /«

Может ли кто-нибудь помочь мне понять, что может быть не так?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]