Проблема в том, что формат файла 7zip требует наличия поиска, поэтому вы не можете использовать формат файла 7z
с-so
(в этом комментарии на странице проекта ). Использование другого формата, такого как xz
, похоже, работает:
$ tar -cO Templates | 7z a -an -txz -si -so | tee tarball.xz | sha256sum ; sha256sum tarball.xz
7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)
Creating archive stdout
Everything is Ok
4349a01e62a7d7b6cfd46caa90ee38904227fc09ef643d87eb8209bc53cb8e50 -
4349a01e62a7d7b6cfd46caa90ee38904227fc09ef643d87eb8209bc53cb8e50 tarball.xz
Однако вы теряете возможность поставить пароль на архив в форматах, для которых это работает (gzip
, bzip2
иxz
).
Ядро отправляет сигнал SIGSEGV
процессу, вызвавшему недопустимую ссылку на виртуальную память (ошибку сегментации ).
Один из способов отправки SIGSEGV
может быть более «опасным», если вы завершите процесс из файловой системы, в которой мало места. Действие по умолчанию, когда процесс получает SIGSEGV
, состоит в том, чтобы сбросить ядро в файл, а затем завершить работу. Основной файл может быть довольно большим, в зависимости от процесса, и может заполнить файловую систему.
Как уже упоминал @Janka, вы можете написать код, чтобы указать вашей программе, как вы хотите, чтобы она обрабатывала сигнал SIGSEGV
. Вы не можете поймать SIGKILL
или SIGSTOP
. Я бы предложил использовать SIGKILL
или SIGSTOP
, когда вы хотите только завершить процесс. Использование SIGSEGV
обычно не будет иметь плохих последствий, но возможно, что процесс, который вы хотите завершить, может обработать SIGSEGV
не так, как вы ожидаете.
SIGSEGV может быть перехвачен принимающей программой и затем может делать все, что хочет программа.
SIGKILL и SIGSTOP — единственные сигналы, которые программа не может перехватывать или игнорировать.