int main()
{
  PutInt(ForkExec("step4_ForkExec_helloworld"));
  PutChar('\n');
  PutInt(ForkExec("step4_ForkExec_helloworld"));
  PutChar('\n');
  return 0;
}
示例#2
0
void main()
{
  int i;

  PutChar('A');
  ForkExec("../test/userpages0");
  PutChar('B');
  ForkExec("../test/userpages1");
  PutChar('C');

  for (i =0; i<100000; i++)
    ;
	
}
示例#3
0
int
main()
{

	SynchPutString("\nTest de ForkExec, ici le Process 0 !\n");


	ForkExec("./thread1");

	ForkExec("./thread2");

	SynchPutString("\nProgramme Process 0 terminé !\n");

	return 0;
}
示例#4
0
int main() {
    int i;
    PutString("start of test \n");
    for (i = 1; i < 16; i++) {
        ForkExec("putstring");
    }
    PutString("end of test\n");
    return 0;
}
int main()
{
    ForkExec("run2");

    int i;
    for (i = 0; i < 100000; i++);

	PutString("ok\n");
	return 0;
}
示例#6
0
int main()
{
	int pid = 0, pid1 = 0;
	PutString("\n");
	PutString("Lancement de userpages0\n");
	pid = ForkExec("etape4/userpages0");
	if(pid == -1){
		PutString("Erreur du lancement de userpages0\n");
		return -1;
	}
	PutString("\n");
	PutString("Lancement de userpages1\n");
	pid1 = ForkExec("etape4/userpages1");
	if(pid1 == -1){
		PutString("Erreur du lancement de userpages1\n");
		return -1;
	}
	PutString("\n");
    return 0;
}
示例#7
0
bool
Start(const char *const*argv)
{
  /* double fork to detach from this process */
  const pid_t pid = fork();
  if (gcc_unlikely(pid < 0))
    return false;

  if (pid == 0)
    _exit(ForkExec(argv) ? 0 : 1);

  return Wait(pid);
}
int main()
{
	PutString("\n-----------------------------------------\n");
	PutString("Lancement du test userProcPutString : \n");
	PutString("Cree un processus qui affiche une chaine de caractere.\n");
	PutString("-----------------------------------------\n");
	int pid = 0;
	PutString("\n");
	PutString("Lancement de putstring\n");
	pid = ForkExec("./etape4/putstring");
	if(pid == -1){
		PutString("Erreur lors du ForkExec\n");
		return -1;
	}
	PutString("\n");
    return 0;
}
示例#9
0
int main()
{
	PutString("\n-----------------------------------------\n");
	PutString("Lancement du test testPid : \n");
	PutString("Cree 5 processus et affiche leur PID.\n");
	PutString("La creation d'un processus peut echouer si memoire insuffisante.\n");
	PutString("-----------------------------------------\n");
	int i;
	int pid;
	for(i = 0 ; i  < NB_PROC ; i++)
	{
		pid = ForkExec("etape4/prog/progPid");
		if(pid == -1)
		{
			PutString("Erreur de creation de processus\n");
		}
	}
    return 0;
}
示例#10
0
int
main()
{
	pthread tid;
	UserThreadCreate(f, (void *) THIS, &tid);
	UserThreadCreate(f, (void *) THIS, &tid);
	// UserThreadCreate(f, (void *) THIS, &tid);
	// UserThreadCreate(f, (void *) THIS, &tid);
	// UserThreadCreate(f, (void *) THIS, &tid);
	
	ForkExec("multiplethreads");

	b((void*) THAT);
	b((void*) THAT);
	b((void*) THAT);

	PutString("\nUserPages0 has terminated...\n");
	return 0;
}
int main()
{
    unsigned int pid;
    int val;

    pid = ForkExec("run2");
    if (pid < 0)
    {
        PutString("Error while Fork\n");
        return -1;
    }

    Waitpid(pid, &val);

    PutString("Child exit code was ");
    PutInt(val);
    PutChar('\n');

    return 0;
}
示例#12
0
int main()
{
	int pid, error;
	PutString("\n-----------------------------------------\n");
	PutString("Lancement du test forkExecSimple : \n");
	PutString("affiche \"Hello World !\" dans un autre processus\n");
	PutString("-----------------------------------------\n");
	pid = ForkExec("./etape4/prog/progSimple");
	if(pid == -1){
		PutString("Erreur de création du processus");
		PutString("\n");
		return -1;
	}

	error = WaitPid(pid);
	if(error == -1){
		PutString("Erreur d'attente du processus");
		PutString("\n");
		return -1;
	}

	return 0;
}
示例#13
0
int
main ()
{

    char prompt[2], buffer[60];
    int i;

    prompt[0] = '-';
    prompt[1] = '-';

    while (1) {
        PutChar (prompt[0]);
        PutChar (prompt[1]);
        i = 0;
        buffer[i]=GetChar();
        while (buffer[i] != '\n') {
            i++;
            buffer[i]=GetChar();
        }

        buffer[i] = '\0';

        if (i > 0) {
            if(buffer[0] == 'q') { //quit le shell
                Exit(0);
            } else {
                if(buffer[0] == 'l') { //affiche un lapin
                    PutString(" (\\/) \n");
                    PutString(" (. .) \n");
                    PutString("c(\")(\") \n");
                } else {
                    ForkExec(buffer); //execute le programme donné en paramètre
                }
            }
        }
    }
}
示例#14
0
bool
Run(const char *const*argv)
{
  const pid_t pid = ForkExec(argv);
  return pid > 0 && Wait(pid);
}
示例#15
0
int main(){
	PutString("\n-----------------------------------------\n");
	PutString("Lancement du test waitPidAll : \n");
	PutString("Teste les cas d'executions/erreurs de waitpid.\n");
	PutString("-----------------------------------------\n");
	int error;
	int pid;

	// On lance le processus a attendre
	pid = ForkExec("./etape4/prog/progWait");
	if(pid == -1){
		PutString("[Test1] Erreur de création du processus\n");
	}

	// On lance le processus qui va attendre le precedent
	pid = ForkExec("./etape4/prog/progDoubleAttente");
	if(pid == -1){
		PutString("[Test1] Erreur de création du processus\n");
		return -1;
	}

	// On attend le processus, en concurrence avec le precedent
	PutString("********************************************\n");
	PutString("[Test1] WaitPid conccurentiel : Mise en attente 1\n");
	error = WaitPid(1);
	if(error == -1){
		PutString("[Test1] Erreur - Ce processus est deja attendu par un autre processus\n");
		return -1;
	}
	else
	{
		PutString("[Test1] Succes\n");
	}

	// On attend le processus deja termine
	PutString("********************************************\n");
	PutString("[Test1] WaitPid sur un processus deja termine\n");
	error = WaitPid(1);
	if(error == -1){
		PutString("[Test1] Erreur - Ce processus est deja attendu par un autre processus\n");
		PutString("********************************************\n");
		return -1;
	}
	PutString("[Test1] Succes\n");
	PutString("********************************************\n");

	// On attend le processus, en concurrence avec le precedent
	PutString("[Test1] WaitPid sur un processus termine par une erreur\n");
	error = WaitPid(2);
	if(error == -1){
		PutString("[Test1] Erreur - Ce processus est deja attendu par un autre processus\n");
		PutString("********************************************\n");
		return -1;
	}
	PutString("[Test1] Succes\n");
	PutString("********************************************\n");
	// On dit au process de s'attendre lui meme
	PutString("[Test1] WaitPid sur soi meme\n");
	error = WaitPid(GetPid());
	if(error == -1){
		PutString("[Test1] Erreur - Impossible de s'attendre soi-meme !\n");
		PutString("********************************************\n");
	}
	else
	{
		PutString("[Test1] Echec\n");
		PutString("********************************************\n");
	}
	PutString("[Test1] Les processus fils sont arretes, arret.\n");
	return 0;
}
示例#16
0
int main()
{
	PutString("Files opened...\n");
	ForkExec("userpages1");
	PutChar('\n');
	ForkExec("userpages2");
	PutChar('\n');
	ForkExec("userpages1");
	PutChar('\n');
	ForkExec("userpages2");
	PutChar('\n');
	ForkExec("userpages1");
	PutChar('\n');
	ForkExec("userpages2");
	PutChar('\n');
	ForkExec("userpages1");
	PutChar('\n');
	ForkExec("userpages2");
	PutChar('\n');
	ForkExec("userpages1");
	PutChar('\n');
	ForkExec("userpages2");
	PutChar('\n');
	ForkExec("userpages1");
	PutChar('\n');
	ForkExec("userpages2");
	PutChar('\n');
	PutString("\nExiting...\n");
Halt();
}