Как сбросить дескриптор файла

touch ~/Desktop/something.txt

В результате получится пустой txt файл.

Или

echo "Hello" > ~/Desktop/somethingelse.txt

Создается файл txt с надписью "Здравствуйте".

nano ~/Desktop/anotherfile.txt

Откроется ~/Desktop/another file.txt в nano, или, если его нет, он создаст его и откроет в nano.

То же самое можно сделать, просто заменив нано на emacs или vim, и он будет использовать emacs или vim вместо nano

0
19.03.2014, 00:40
2 ответа

Файловые дескрипторы принадлежат процессу: то есть текущему процессу. Сразу после выхода из процесса назначения не действуют. Даже подоболочка (или любой дочерний процесс), наследующая файловые дескрипторы, из fork () вызывает свои собственные копии файловых дескрипторов (файловый дескриптор - это просто число, указывающее на ресурс ввода-вывода в ядре Linux). Это похоже на открытые файлы - открытие файла в одном процессе не делает его открытым для всех, и если вы не закроете его самостоятельно, Linux закроет его и очистит, когда процесс завершится.

3
28.01.2020, 02:20

Как мы узнаем, какое значение содержит какой файловый дескриптор (печать значений файлового дескриптора с помощью оболочки)

Вы может перечислить все файловые дескрипторы процесса, используя файловую систему / proc , используя

ls -l /proc/<PID>/fd

Пример:

$ ls -l /proc/2218/fd
total 0
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 0 -> /dev/null
l-wx------ 1 setacinq setacinq 64 Mar 14 09:29 1 -> /dev/null
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 18 -> pipe:[14524]
l-wx------ 1 setacinq setacinq 64 Mar 14 09:29 19 -> pipe:[14524]
l-wx------ 1 setacinq setacinq 64 Mar 14 09:29 2 -> /home/setacinq/.xsession-errors
lrwx------ 1 setacinq setacinq 64 Mar 14 09:29 22 -> anon_inode:[eventfd]
lrwx------ 1 setacinq setacinq 64 Mar 14 09:29 23 -> anon_inode:[eventfd]
lrwx------ 1 setacinq setacinq 64 Mar 14 09:29 28 -> socket:[14566]
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 30 -> /usr/share/unity/lenses/commands/commands.lens
lrwx------ 1 setacinq setacinq 64 Mar 14 09:29 32 -> socket:[11753]
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 35 -> /usr/share/unity/lenses/music/music.lens
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 36 -> /usr/share/unity/lenses/files/files.lens
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 37 -> /usr/share/unity/lenses/applications/applications.lens
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 38 -> /usr/share/unity/lenses/video/video.lens
lr-x------ 1 setacinq setacinq 64 Mar 14 09:29 8 -> anon_inode:inotify
lrwx------ 1 setacinq setacinq 64 Mar 14 09:29 9 -> /home/setacinq/.config/compiz-1/compizconfig/done_upgrades
1
28.01.2020, 02:20

Теги

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