[FLUG] boh.. così

  • From: "Simon" <seddie@xxxxxxxxx>
  • To: <fanolug@xxxxxxxxxxxxx>
  • Date: Tue, 30 Jul 2002 23:19:54 +0200

Mailing List del Fortunae LUG
=============================

Non trovando nulla di meglio da fare sta sera
vi pasto un pò di codice (non esente da possibili
bugs)...

int exec_cmnd(char *cmd, int argc, ...)
{
  va_list ap;
  char **args;
  int c, ret, status;
  pid_t chld;

  /* da fare meglio con una calloc... me ne sbatto */
  args = malloc((argc + 2) * sizeof(char *));
  memset(args, 0x00, (argc + 2) * sizeof(char *));

  args[0] = cmd;

  va_start(ap, argc);
  for(c = 1; c <= argc; ++c)
    args[c] = va_arg(ap, char *);
  va_end(ap);

  if((chld = fork()) == 0) {
     execv(cmd, args);
     exit(-1);
  }

  if(chld > 0) {
    while(wait(&status) != chld);
    ret = WEXITSTATUS(status);
  }
  else ret = -1;

  free(args);

  return ret;
}

Serve per eseguire i binari in maniera semplice, il controllo
viene restituito al termine dell'esecuzine del binario chiamato.
Esempio pratico:

exec_cmnd("/bin/ls", 1, "-la")

Ci si può implementare sopra anche una system() così:

exec_cmnd("/bin/sh", 2, "-c", "ls -la");

Simon.


--
<simon> prima di fare ifconfig devi fare il setup della scheda sonora

Other related posts:

  • » [FLUG] boh.. così