Erstellen von mehreren threads und aufrufen von anderen exectuables in Cygwin durch system()?

Arbeite ich an einem Projekt in Cygwin. In einem Versuch zu erstellen, die mehrere threads in C, und jeder thread ruft eine andere ausführbare Datei über die Kommandozeile mit dem system () - Funktion, es stellt sich heraus Dinge, die nicht richtig funktionieren. Insbesondere ist der code, den ich habe, ist wie dieses:

#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS     5

void *PrintHello(void *threadid)
{
  long tid;
  tid = (long)threadid;
  system("date ");
  pthread_exit(NULL);
}

int main (int argc, char *argv[])
{
  pthread_t threads[NUM_THREADS];
  int rc;
  long t;

  for(t=0; t<NUM_THREADS; t++){
    printf("In main: creating thread %ld\n", t);
    rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
    if (rc){
       printf("ERROR; return code from pthread_create() is %d\n", rc);
       exit(-1);
    }
  }
  pthread_exit(NULL);
}

Aber es funktioniert nicht. Der Fehler den ich bekomme, ist segmenetation Fehler mit stack-überlauf. Trotzdem eine Idee hat, wie andere ausführbare Dateien im system-shell, die parallel durch die Erstellung mehrerer threads?
Danke.

  • Es ist offensichtlich nichts falsch mit dem code und es läuft wunderbar unter linux. Wie ein Schuss im Dunkeln, hast du den link mit -pthreads-lpthreads, etc.?
InformationsquelleAutor user492506 | 2010-10-31
Schreibe einen Kommentar