我正在尝试使用c创建tar文件。由于某种原因我无法使用
system("tar -cvf xxxx.tar xxxx");
我的代码是:
#include <stdio.h> #include <libtar.h> #include <fcntl.h> int main(void) { TAR *pTar; char *tarFilename = "file.tar"; char *srcDir = "directory"; char *extractTo = "."; tar_open(&pTar, tarFilename, NULL, O_WRONLY | O_CREAT, 0644, TAR_GNU); tar_append_tree(pTar, srcDir, extractTo); tar_close(pTar); return (0); }
运行此代码后,当我想解压时
tar -xvf file.tar
我收到一个错误
tar: This does not look like a tar archive tar: Exiting with failure status due to previous errors
我的C代码有什么问题?
我认为您需要在关闭tar文件之前调用tar_append_eof http://linux.die.net/man/3/tar_append_eof。
tar_append_eof()函数将EOF标记(两个全为零的块)写入与t关联的tar文件。