How do I call execlp()
with a variable number of arguments for different processes?
If you don't know how many arguments you'll need at the time you are writing your code, you want to use execvp(), not execlp():
char **args = malloc((argcount + 1) * sizeof(char *));
args[0] = prog_name;
args[1] = arg1;
...
args[argcount] = NULL;
execvp(args[0], args);
This answers only the title question
From Wikipedia Covers old and new styles
#include <stdio.h>
#include <stdarg.h>
void printargs(int arg1, ...) /* print all int type args, finishing with -1 */
{
va_list ap;
int i;
va_start(ap, arg1);
for (i = arg1; i != -1; i = va_arg(ap, int))
printf("%d ", i);
va_end(ap);
putchar('\n');
}
int main(void)
{
printargs(5, 2, 14, 84, 97, 15, 24, 48, -1);
printargs(84, 51, -1);
printargs(-1);
printargs(1, -1);
return 0;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With