示例#1
0
 cv::Mat filterVis() const
 {
     size_t maxFilters=0;
     size_t maxFilterSize=0;
     for (size_t i=0; i<stages.size(); i++)
     {
         maxFilters = std::max(stages[i].filters.size(), maxFilters);
         for (size_t j=0; j<stages[i].filters.size(); j++)
         {
             if ( stages[i].filters[j].cols > int(maxFilterSize))
                 maxFilterSize = size_t(stages[i].filters[j].cols);
         }
     }
     maxFilterSize += 2;
     cv::Mat fils(maxFilterSize*stages.size(), maxFilterSize*maxFilters, CV_8U, Scalar(0));
     for (size_t i=0; i<stages.size(); i++)
     {
         cv::Mat res;
         for (size_t j=0; j<stages[i].filters.size(); j++)
         {
             Rect roi(1+j*maxFilterSize,1+i*maxFilterSize, stages[i].filters[j].cols,stages[i].filters[j].rows);
             stages[i].filters[j].convertTo( fils(roi), CV_8U,128,128);
         }
     }
     return fils;
 }
main()
{
    int     desc[2] ;
    char    chaine[] = "Hey! Hello you :)" ;
    /*
     * Création du tube
     */
    pipe(desc);

    /*
     * Création du fils
     */
    switch (fork()){
        case -1:
            printf ("FAILED FORK\n");
            break;
        // child process
        case 0:
            fils(desc[0]) ;
            exit(0) ;

    }
   
    /*
     * Ecrire dans le tube
     */
    printf ("Ecriture dans le tube\n");
    write(desc[1], chaine, (sizeof(chaine)+1));

}
示例#3
0
int			recurse_pipe(t_data *d, t_more *link, int fd)
{
	int	father;
	int	pfd[2];

	if (pipe(pfd) == -1)
	{
		ft_putstr_fd("Pipe error (recurse_pipe)\n", 2);
		return (-1);
	}
	if ((father = fork()) < 0)
	{
		ft_putstr_fd("Fork() error (recurse_pipe)\n", 2);
		return (-1);
	}
	if (father == 0)
		fils(d, link, fd, pfd);
	else
	{
		close(pfd[0]);
		dup2(pfd[1], 1);
		close(pfd[1]);
		if (link->prev != NULL)
			prev_operator(d, link);
	}
	dup2(0, 1);
	return (1);
}
示例#4
0
文件: ex5_posix.c 项目: mbittan/PR
int main(int argc, char ** argv) {
  if(argc!=2){
    fprintf(stderr,"Nombre d'arguments incorrect\n");
    fprintf(stderr,"Usage : %s <nom_fic>\n",argv[0]);
    exit(EXIT_FAILURE);
  }
  int fd;
  pid_t pid;
  int i;

  if((fd=open(argv[1], O_RDONLY))==-1){
    erreur("open");
  }

  for(i=0;i<N;i++){
    if((pid=fork())==-1){
      erreur("fork");
    }else if (pid==0){
      fils(fd);
    }
  }

  for(i=0;i<N;i++){
    wait(NULL);
  }

  return EXIT_SUCCESS;
}
    Objet* 
    PointDeVue::ConstruireVue(const Base::Association<Modele::Objet>& _modele)
    {

      Base::Traceur::MessageInterne("Entering Affichage::PointDeVue::ConstruireVue") ;
      
      Base::Composition<Objet> resultat ;
      
      if (this->EstVisible(_modele))
      {
        /// On construit l'objet
        resultat = new Objet(_modele,*this) ;
        
        /// On mémorise l'observateur
        if (_modele == this->observateur)
        {
          this->vueObservateur = resultat ;
        }
        
        /// ses facettes
        for (Base::IterateurEnsembleAssociation<Modele::Facette> 
                facette(_modele->AccesFacettes()) ; 
             facette.Valide() ;
             ++facette)
        {
          Base::Traceur::MessageInterne("searching constructor for " + Base::Chaine(typeid(*this).name()) + " " +  typeid(**facette).name()) ;
          ConstructeurVue constructeur = 
            constructeurs[std::make_pair<Base::Chaine,Base::Chaine>(typeid(*this).name(),typeid(**facette).name())] ;

          if (! constructeur.empty())
          {
            resultat->Ajouter(constructeur(*facette)) ;
          }
          else
          {
            Base::Traceur::MessageInterne("in Affichage::PointDeVue::ConstruireVue : constructeur vide pour " + Base::Chaine(typeid(*this).name()) + " " +  typeid(**facette).name()) ;
          }            
          
          
        }
        
        /// On construit ses composants visibles
        for (Base::IterateurEnsembleAssociation<Modele::Objet> 
                                  fils(_modele->AccesContenu()) ;
             fils.Valide() ;
             ++fils)
        {
          if (this->EstVisible(*fils) == Base::VRAI)
          {
            resultat->Ajouter(this->ConstruireVue(*fils)) ;
          }
        }
      }

      Base::Traceur::MessageInterne("Leaving Affichage::PointDeVue::ConstruireVue") ;
      
      return resultat.Liberer() ;
    }
示例#6
0
int main(int argc, char *argv[]){
    key_t cle;
    int nens;

    cle = ftok("./Makefile",ID_PROJET);

    nens = ouvrirSem(cle);

    if( nens==-1){
        perror("Pb lors ouverture sem fils");
        exit(-1);
    }

    fils(nens);
    return 0;
}
示例#7
0
int main(int argc, char *argv[])
{
	key_t key;
	int nbProc, nbBoucle;
	int semid, i;
	unsigned short *init;
	pid_t pid;
	
	nbProc = atoi(argv[1]);
	nbBoucle = atoi(argv[2]); 

	init = calloc(nbProc, sizeof(unsigned short));
	init[0] = 1;

	if ((key = ftok("alternance.c", 10)) == -1)
	{
		perror("Erreur 1\n");
		exit(1);
	}

	// Création ensemble de sémaphore
	if ((semid = semget(key, nbProc, IPC_CREAT | 0777)) == -1)
	{
		perror("Erreur 2\n");
		exit(1);
	}

	// Initialisation de l'ensemble des sémaphores
	arg.array = init;
	if (semctl(semid, 0, SETALL, arg) == -1)
	{
		perror("Erreur 2\n");
		exit(1);
	}

	for (i = 0 ; i<nbProc ; i++)
	{
		pid = fork();
		
		switch(pid)
		{
			case -1:
				perror("Erreur 5\n");
				exit(EXIT_FAILURE);			
			case 0:
				fils(semid, i, i, nbProc, nbBoucle);
				exit(0);
		}
	}

	while (wait(NULL) != -1);

	// Destruction semaphore
	if (semctl(semid, 0, IPC_RMID,0)== -1)
	{
		perror("Erreur sup\n");
		exit(1);
	}	

	return EXIT_SUCCESS;
}