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: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
gzipandgunzipare 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.