У нас был этот кусок кода 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 / * Неверный аргумент * /«
Может ли кто-нибудь помочь мне понять, что может быть не так?
Задача ещё не решена.
Других решений пока нет …