我在使用gzip压缩C程序中的文件时遇到了一些问题。我使用这行代码execl("/usr/bin/gzip", "-f", filePath, NULL);
来压缩filePath
给出的文件。第一次(即,当没有现有的.gz文件时(它工作得很好,但在程序的后续执行中,系统会提示我是否要覆盖现有的.gg文件。
我是否错误地使用了execl()
,因为我很确定-f
开关会在没有提示的情况下强制gzip覆盖?
您还需要提供argv[0]
。所以,像这样:
execl("/usr/bin/gzip",
"gzip", "-f", filePath,
NULL);
在代码中,您将argv[0]
设置为"-f"
,因此它基本上被忽略。
Gzip是少数几个参数0真正重要的程序之一,因为gzip
和gunzip
通常(至少在Unixy系统上(是指向同一二进制文件的符号链接,参数0用于确定默认模式。如果你的"-f"
工作,这意味着gzip是默认的。