Comment appeler execlp()
avec un nombre variable d'arguments pour différents processus?Comment appeler une fonction avec un nombre variable de paramètres?
Répondre
Si vous ne savez pas combien d'arguments que vous aurez besoin au moment où vous écrivez votre code, vous souhaitez utiliser execvp(), non execlp():
char **args = malloc((argcount + 1) * sizeof(char *));
args[0] = prog_name;
args[1] = arg1;
...
args[argcount] = NULL;
execvp(args[0], args);
Cela répond seulement titre de la question
de Wikipedia Couvre anciens et nouveaux 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;
}
execlp()
peut être appelé avec un nombre variable ou argumen ts, appelez simplement:
int ret;
ret = execlp("ls", "ls", "-l", (char *)0);
ret = execlp("echo", "echo", "hello", "world", (char *)0);
ret = execlp("man", "man", "execlp", (char *)0);
ret = execlp("grep", "grep", "-l", "pattern", "file1", "file2", (char *)0);
Execlp déjà comme un nombre variable de paramètres. Que veux-tu faire exactement? Vous pouvez probablement variadic macro:
#define myfind(...) execlp("find", "find", __VA_ARGS__)
Ceci est un exemple assez inutile, mais sans le savoir plus précisément ce que vous vouliez faire, c'est tout ce que je pouvais venir avec
Ce n'est pas la syntaxe des macros variadiques C99 (standard). Pourquoi continuer à l'utiliser? –
Désolé pour cela, quelle est la syntaxe alors? – shodanex
- 1. Flex Comment appeler une fonction avec un nombre variable de paramètres?
- 2. Comment transmettre un nombre variable de paramètres avec une fonction de rappel?
- 3. Comment doc un nombre variable de paramètres
- 4. PHP: Définir la fonction avec le nombre variable de paramètres?
- 5. Nombre variable d'arguments (va_list) avec un rappel de fonction?
- 6. Comment écrire une fonction JS qui accepte et "transmet" un nombre variable de paramètres?
- 7. En C pur comment puis-je passer un nombre variable de paramètres dans une fonction?
- 8. Qu'entend-on par "fonctions avec un nombre variable de paramètres"?
- 9. Fonction Ruby avec un nombre illimité de paramètres
- 10. Appeler une variable d'une autre fonction Python
- 11. Appeler une fonction dll sur la base de paramètres variables
- 12. C# et nombre variable de paramètres
- 13. Contrôleur avec un nombre de paramètres inconnu?
- 14. jQuery, comment appeler une fonction lors du passage d'une variable
- 15. Oracle: nombre variable de paramètres pour une procédure stockée
- 16. Construire des objets avec un nombre variable de membres?
- 17. Comment puis-je appeler une fonction qui prend 2 paramètres avec un Tuple2?
- 18. Fonction avec un nombre variable d'arguments en C et une question de conception
- 19. Comment rechercher des fonctions avec un certain nombre de paramètres
- 20. Transmettre un nombre variable d'arguments à une fonction d'alias
- 21. Comment puis-je transmettre un nombre variable de paramètres nommés à une méthode?
- 22. Comment appeler une fonction varargs avec un tableau en ActionScript?
- 23. Comment compter le nombre d'arguments passés à une fonction qui accepte un nombre variable d'arguments?
- 24. Wordpress: comment appeler une fonction plugin avec un appel ajax?
- 25. Utilisation de __arglist avec un ensemble variable de paramètres nommés
- 26. Comment appeler une fonction dynamique
- 27. Comment appeler une variable dans un objet Objectif-C
- 28. Nombre de paramètres passés à la fonction?
- 29. Comment passer un nombre variable de paramètres à une procédure stockée SQL Server?
- 30. Comment appeler une fonction particulière en fonction de la variable transmise?
Pourquoi ne pas simplement utiliser 'execvp' si le nombre d'arguments peut varier à l'exécution? –