Создайте именованный канал и позвольте вашей программе C читать из него:
$ mkfifo input
$./prog <input
В другом сеансе оболочки:
$ echo Stop >/path/to/input
tar -x
извлечет содержимое файла *.tar.*
в текущий рабочий каталог... Точка. При этом, вот что это значит, и как мы можем обойти это, чтобы получить желаемое поведение.
Обычно каталог архивируется. Значение кто-то написал:
tar -czf tarball.tar.gz somedirectory
В этом случае, если вы tar -x
это сделаете, содержимое будет извлечено в somedirectory
. Однако это только по соглашению. Кто-то вполне может сжать архив с:
tar -czf tarball.tar.gz file1 file2 file3
В этом случае, когда вы tar -x
, вы получите file1
, file2
и file3
в текущем каталоге.
В этой ситуации, если вы хотите сохранить извлеченные файлы в изолированном каталоге, вам следует:
mkdir tarball && cd tarball && tar -xzf../tarball.tar.gz
Чтобы понять, следует ли вам tar -x
или mkdir _ & cd _ & tar -x../_
, вы можете использовать tar --list -f tarball.tar.gz
.Это перечислит содержимое tar-архива перед его извлечением, чтобы вы могли решить, хотите ли вы распаковать его в pwd
, как -, или создать новый каталог и извлечь его оттуда.