как вызвать lstat (2) вместо lstat (3)? - PullRequest
2 голосов
/ 08 августа 2010

Как мне вызвать системный вызов lstat в linux / c, а не оболочку lstat вокруг него (lstat (3))?SYS_lstat для системного вызова не существует (SYS_lstat ...

Ответы [ 2 ]

4 голосов
/ 08 августа 2010

Если вы используете системный вызов напрямую, вам нужно убедиться, что ваше определение struct stat и определение ядра согласуются. Кроме того, если вы работаете на 32-битной машине, вам, вероятно, никогда не следует использовать устаревший системный вызов lstat, а вместо него lstat64, поскольку первый не будет работать с большими файлами. Эти и многие другие проблемы являются причиной того, почему плохая идея делать системные вызовы самостоятельно вместо использования стандартной библиотеки; последняя оборачивает все устаревшие совместимости и дает вам совместимый со стандартами интерфейс POSIX.

2 голосов
/ 08 августа 2010

Возможно, у вас неполные заголовки, SYS_lstat указан в /usr/include/bits/syscall.h в моей системе Ubuntu 10.4.

#define SYS_lstat __NR_lstat

Затем в asm / unistd_64.h:

#define __NR_lstat                              6

Или, возможно, asm / unistd_32.h:

#define __NR_lstat              107

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...