Почему исполняемый файл называется "текстовым файлом"?

Если вы предпочитаете завитки, самый прямой способ:

curl -L -o  "https://drive.google.com/uc?export=download&id="

имя файла :имя загруженного файла

идентификатор файла :идентификатор файла в веб-представлении Google Диска в форматеhttps://drive.google.com/file/d/идентификатор файла /представление

2
31.03.2020, 22:24
2 ответа

В наше время это в основном просто артефакт символа ошибки, используемого для этой ошибки в POSIX :ETXTBSY, который strerrorсопоставляется с «Текстовый файл занят».

Основываясь на этом ответе на SO, можно сделать вывод, что «текстовый раздел» происходит от старого использования «двоичного текста». Однако ETXTBSYвозвращается не только для двоичных программ, его также можно возвращать для таких вещей, как активные файлы подкачки (, хотя мой патч для реконфигурации онлайн-подкачки выйдет в этой половине, что изменит это )и другое состояние, которое ядро ​​не может разрешить мутацию в настоящее время.

Основываясь на этом, я не совсем уверен, что TXTв ETXTBSYдействительно имеет отношение к текстовой части. Я подозреваю, что это больше связано с тем фактом, что «текст» может быть проще однозначно сократить до имени ошибки, чем «файл», хотя я не нашел доказательств в любом случае.

5
19.03.2021, 02:30

ETXTBSY — это стандартная системная ошибка posix, которая также используется в Linux.

Подобно EACCESS, EPERM или EISDIR, он указывает причину неудачного доступа к индексному узлу.

Во-первых, есть вспомогательная функция get _write _access (). Он проверяет некоторое поле i_writecount. Это усложняется.

static inline int get_write_access(struct inode *inode)
{
    return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -ETXTBSY;
}

В этой строке показано аналогичное использование этого кода ошибки:

mm/nommu.c:             return -ETXTBSY; /* not quite true, but near enough */

. vfs _truncate ()в fs.hимеет этот тест посередине (между EISDIR и безопасностью)

error = get_write_access(inode);
if (error)
    goto mnt_drop_write_and_out;

Другой ETXTBSY касается файлов подкачки. vfs _fallocate ()из fs/open.c:

/*
 * We cannot allow any fallocate operation on an active swapfile
 */
if (IS_SWAPFILE(inode))
    return -ETXTBSY;

Здесь система говорит :извините, мне нужен этот файл (не :у вас нет прав ).


Сравните также:

]# grep busy  include/uapi/asm-generic/errno-base.h
#define EBUSY   16      /* Device or resource busy */
#define ETXTBSY         26      /* Text file busy */

Жаль, что вы вообще не упомянули ни контекст, ни сообщение об ошибке

0
19.03.2021, 02:30

Теги

Похожие вопросы