J'utilise GNU tar. Il peut détecter automatiquement le type de compression lors de la compression / décompression de fichiers. Mais j'ai besoin de décompresser une archive de stdin et le type de compression est inconnu. J'ai remarqué que le goudron peut me donner des suggestions correctes comme:
tar: Archive is compressed. Use -z option
Mais je veux que tar utilise automatiquement cette option de compression sans me demander de saisir cet argument. Comment puis je faire ça? Pourquoi ne pas simplement décompresser tar car il connaît déjà le type de compression?
Je vous remercie!
tar
ne sait pas sur quel type de données il se trouve stdin
jusqu'à ce qu'il le lise et qu'il soit alors trop tard pour appeler le programme de décompression. Il prend en charge gzip, bzip2 et autres. Il n'est pas facile de contourner ce problème (il faudrait mettre les données en mémoire tampon), donc il vous dit simplement de réessayer.
fork()
/ exec()
pour diriger les données via un utilitaire de décompression. L'utilitaire lirait à partir du stdin
tuyau et le premier 4K serait désormais manquant. Il n'y a aucun moyen de remettre les données dans le tuyau après les avoir lues.
cat buffer - | gunzip
. (Alternativement, des E / S non bloquantes pourraient être utilisées pour éviter la nécessité d'un processus supplémentaire.)