Предотвращает ли существование доступного для записи обычного файла с таким же именем создание файла дампа ядра? [закрыто]

Para citar solo los valores que contienen comas:

$ sed 's/[^|]*,[^|]*/"&"/; y/|/,/' <infile
var1,var2,var3
"Potter, Harry",2,3

Si la entrada ya contenía caracteres de comillas dobles y no se usaban para el formato CSV (como para Riddle, Tom "Voldemort"|4|5), entonces para la mayoría de los formatos csv, los escapa con"":

$ sed 's/"/""/g; s/[^|]*[,"][^|]*/"&"/; y/|/,/' <infile
"Riddle, Tom ""Voldemort""",4,5
-4
03.12.2018, 13:33
2 ответа

If an existing file with the same name is writable, doesn't that mean it can be overwritten?

Да, именно это и означает «доступный для записи».

Does its number of hard links matter to producing a core dump file in some way? It works fine in the following case without core dump involved, which is the source of my confusion (I am here for clarification not for confusing others):

Ответ содержится в упомянутой вами цитате:

A (writable, regular) file with the same name as would be used for the core dump already exists, but there is more than one hard link to that file.

Это означает, что при выполнении этих двух условий файл ядра не будет создан:

  1. Файл с тем же именем, что и основной файл, который будет создан (, обычноcore)уже существует и доступен для записи.

И

  1. На этот файл указывает более одной жесткой ссылки.

Итак, да, количество жестких ссылок в некотором роде имеет значение. :В справочной странице сказано, что если на файл имеется более одной жесткой ссылки, то основной файл не будет создан.

1
28.01.2020, 05:20

В Ubuntu дамп ядра по умолчанию передается в /usr/share/apport/apport,

$ sysctl kernel.core_pattern 
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P

В /usr/share/apport/apportрасположение сигнала для SIGQUIT:https://bazaar.launchpad.net/~apport-hackers/apport/trunk/view/3194/data/apport#L474

# ignore SIGQUIT (it's usually deliberately generated by users)
if signum == str(int(signal.SIGQUIT)):
    drop_privileges()
    write_user_coredump(pid, cwd, core_ulimit)
    sys.exit(0)

В write_user_coredump(),https://bazaar.launchpad.net/~apport-hackers/apport/trunk/view/3194/data/apport#L181

core_path = os.path.join(cwd, 'core')
try:
    with open('/proc/sys/kernel/core_uses_pid') as f:
        if f.read().strip() != '0':
            core_path += '.' + str(pid)
    core_file = os.open(core_path, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600)
except (OSError, IOError):
    return

os.O_CREAT | os.O_EXCLвыдаст ошибку, если файл coreуже существует. Это объясняет первую половину

A (writable, regular) file with the same name as would be used for the core dump already exists, but there is more than one hard link to that file.

Но

  • «доступно для записи» на странице руководства вводит в заблуждение. :что-то «доступно для записи» на самом деле недоступно для записи.

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

0
28.01.2020, 05:20

Теги

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