I am having a bit of trouble using gzip to compress a file from a C program. I am using this line of code execl("/usr/bin/gzip", "-f", filePath, NULL);
to compress the file given by filePath
. It works fine the first time (i.e. when there is no existing .gz file), but in subsequent executions of the program I am prompted whether or not I would like to overwrite the existing .gz file.
Am I using execl()
incorrectly, because I am pretty sure that the -f
switch forces gzip to overwrite without a prompt?
You need to provide argv[0]
too. So, like this:
execl("/usr/bin/gzip",
"gzip", "-f", filePath,
NULL);
In your code, you set argv[0]
to be "-f"
, so it is essentially ignored.
Gzip is one of the few programs where argument 0 actually matters, as gzip
and gunzip
are usually (at least on Unixy systems) a symbolic link to the same binary, and argument 0 is used to determine the default mode. If your "-f"
worked, it means gzip is default.