Я написал простую программу для тестирования функций lsetxattr() и lgetxattr(). Я просто хотел добавить в этот файл расширенное свойство и снова получить значение. Но я не могу получить результат, как ожидалось. Итак, как правильно использовать эти два метода? Спасибо!Использование функций lsetxattr и lgetxattr
#define _GNU_SOURCE
#include <ctype.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <getopt.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/xattr.h>
#include <time.h>
#include <unistd.h>
int main()
{
char *path = "/tmp/abc.txt";
FILE *file = fopen(path, "w");
int id = 101;
if (lsetxattr(path, "user.id", &id, sizeof(int), 0) < 0)
printf("lsetxattr wrong\n");
int result;
if (lgetxattr(path, "user.id", &result, sizeof(int)) != sizeof(int)) {
printf("lgetxattr wrong\n");
}
printf("%d\n", result);
return 0;
}
один из ваших «неправильных» сообщений печати, или это просто возвращая результат, отличный от 101? – Barmar
Если функция возвращает -1, вы должны использовать 'perror()', чтобы причина была напечатана. – Barmar