exec.h 849 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef _BITS_EXEC_H
  2. #define _BITS_EXEC_H
  3. int execl(const char *path, const char* argv0, ...)
  4. {
  5. int argc;
  6. va_list ap;
  7. va_start(ap, argv0);
  8. for (argc = 1; va_arg(ap, const char*); argc++);
  9. va_end(ap);
  10. {
  11. int i;
  12. char *argv[argc+1];
  13. va_start(ap, argv0);
  14. argv[0] = (char *)argv0;
  15. for (i = 1; i < argc; i++) {
  16. argv[i] = va_arg(ap, char *);
  17. }
  18. argv[i] = NULL;
  19. va_end(ap);
  20. return execv(path, argv);
  21. }
  22. }
  23. int execle(const char *path, const char* argv0, ...)
  24. {
  25. int argc;
  26. va_list ap;
  27. va_start(ap, argv0);
  28. for (argc = 1; va_arg(ap, const char *); argc++);
  29. va_end(ap);
  30. {
  31. int i;
  32. char *argv[argc+1];
  33. char **envp;
  34. va_start(ap, argv0);
  35. argv[0] = (char *)argv0;
  36. for (i = 1; i <= argc; i++) {
  37. argv[i] = va_arg(ap, char *);
  38. }
  39. envp = va_arg(ap, char **);
  40. va_end(ap);
  41. return execve(path, argv, envp);
  42. }
  43. }
  44. #endif