#include #include #include #include #include #include #include int test_fork (int argc, char *argv[]) { // pthread_t t1; const int maxthread = 400; int tb[maxthread][2]; for (int i=0; i0){ nbpaquet++; // printf ("pid %d %d\n",getpid(),n); if (fout != -1) write (fout,buf,n); } if (argv[2] != NULL) printf ("pid %d nbpaquet %d\n",getpid(),nbpaquet); _exit(0); }else if (pid == -1){ printf ("Can't fork %s\n",strerror(errno)); } } int n; char buf[10000]; while ((n=read(0,buf,sizeof(buf)))>0){ write (tb[0][1],buf,n); } printf ("eof\n"); for (int i=0; ifin; int fout = info->fout; int n; char buf[10000]; int nbpaquet = 0; while ((n=read(fin,buf,sizeof(buf)))>0){ nbpaquet++; // printf ("pid %d %d\n",getpid(),n); if (fout != -1) write (fout,buf,n); } // printf ("pid %d nbpaquet %d\n",getpid(),nbpaquet); close (fout); return NULL; } int test_thread (int argc, char *argv[]) { const int maxthread = 400; pthread_t t[maxthread]; int tb[maxthread][2]; for (int i=0; i0){ write (tb[0][1],buf,n); } printf ("eof\n"); close(tb[0][1]); void *status; for (int i=0; i0){ nbpaquet++; write (tbout[1],buf,100); } printf ("pid %d %d\n",getpid(),nbpaquet); _exit(0); } } for (int i=0; i<10000; i++){ char buf[100]; write (tbin[1],buf,100); read (tbout[0],buf,100); } close (tbin[1]); int status; while (wait(&status)!= -1); } void *thread_read (void *p) { THINFO *info = (THINFO*)p; int fin = info->fin; int fout = info->fout; int nbpaquet = 0; char buf[100]; while (read(fin,buf,100)>0){ nbpaquet++; write (fout,buf,100); usleep (1000); } printf ("pid %d %d\n",getpid(),nbpaquet); return NULL; } void test_preadpack(int argc, char *argv[]) { int tbin[2],tbout[2]; pipe(tbin); pipe(tbout); int nbtr = atoi(argv[1]); pthread_t t[nbtr]; THINFO infos[nbtr]; for (int i=0; i