Я написал эту программу, чтобы открыть файл. Все было нормально, пока я не видел это разрешение (-ws-WX - T) с ls -lh
неожиданный результат (-wS-wx-T) по разрешению файла с помощью функции open() в C
open.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#define FILE "foo.txt"
int main()
{
int fd;
int errnum;
fd = open(FILE, O_RDWR | O_CREAT);
if(fd == -1)
{
printf("[error] The file hasn't opened.\n");
perror("Error printed by perror");
}else {
printf("The process was succeeded\n");
}
return 0;
}
Я составил программу featly, не принимать какие-либо ошибки или предупреждения.
$ ./open
The process was succeeded
$ ls -lh
-rwxrwxr-x 1 hemre hemre 8.5K Feb 1 23:38 open
--wS-wx--T 1 hemre hemre 0 Feb 1 23:39 foo.txt
Я никогда не видел разрешения. Что такое «S» и «T», что означает в разделе раздел «Права доступа к файлам»? (ПРИМЕЧАНИЕ: Я принял ответ на этот вопрос в комментариях.)
Если вы ищете объяснения по разрешениям файловой системы Linux, лучше просмотреть [unix.stackexchange.com] (http://unix.stackexchange.com). – AntonH
@ Это разрешение появилось после программы C. Я думаю, что это тоже связано. – metarose
@jxh umask is 0002. – metarose