Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [teorico] Fork per windows

    Salve a tutti,
    mi sto preparando all'esame di sistemi operativi, e mi ricordo (e sono anche riuscito a trovare il codice sul tannenbaum) che il comando per creare nuovi processi su Unix fosse fork(). Non mi ricordo invece qual'è il nome del comando per windows nt.

    Sapete dirmi qualcosa a riguardo? se almeno mi ricordassi il nome potrei cercarlo meglio
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    É la CreateProcess.. Qui c'é un esempio:
    codice:
    /**
     * This program creates a separate process using the CreateProcess() system call.
     *
     * Figure 3.12
     *
     * @author Gagne, Galvin, Silberschatz
     * Operating System Concepts  - Eighth Edition
     * Copyright John Wiley & Sons - 2008.
     */
     
    #include <windows.h>
    #include <stdio.h>
    
    int main( VOID )
    {
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
    
        ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
        ZeroMemory( &pi, sizeof(pi) );
    
        // Start the child process.
        if( !CreateProcess( NULL,   // No module name (use command line).
            "C:\\WINDOWS\\system32\\mspaint.exe", // Command line.
            NULL,             // Process handle not inheritable.
            NULL,             // Thread handle not inheritable.
            FALSE,            // Set handle inheritance to FALSE.
            0,                // No creation flags.
            NULL,             // Use parent's environment block.
            NULL,             // Use parent's starting directory.
            &si,              // Pointer to STARTUPINFO structure.
            &pi )             // Pointer to PROCESS_INFORMATION structure.
        )
        {
            printf( "CreateProcess failed (%d).\n", GetLastError() );
            return -1;
        }
    
        // Wait until child process exits.
        WaitForSingleObject( pi.hProcess, INFINITE );
    
        // Close process and thread handles.
        CloseHandle( pi.hProcess );
        CloseHandle( pi.hThread );
    }
    Dal libro "Operating System Concepts" by Abraham Silberschatz.

  3. #3
    CreateProcess (se non erro descritta nel mio Tanenbaum nel capitolo relativo a Windows Vista)

    Per inciso, occhio che CreateProcess non è solo un fork, ma combina una fork ed una exec. In Windows NT (o almeno, con la "personalità" WinAPI) non è possibile ottenere una fork "pura"; uno dei motivi di questa decisione è la natura inerentemente multithreaded dei processi NT (i thread su Windows NT sono stati da sempre supportati a livello di kernel), e se ci sono più thread in esecuzione non è chiaro quale sia la cosa "giusta" da fare al momento di una fork (copiare tutti i thread in esecuzione? solo quello che ha forkato? altro ancora?).
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Mamma mia le chiamate di sistema Unix sono orrende.

    msgget, shmget.
    Non so voi, ma a me sembra molto piu' comunicativo CreateProcess o OpenSemaphore che fork oppure semget-semctl
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    A me piace tantissimo Linux, anche se Windows è piu immediato sopratutto per la GUI.
    Per gli Spartani e Sparta usa spartan Il mio github

  6. #6
    Originariamente inviato da XWolverineX
    Mamma mia le chiamate di sistema Unix sono orrende.

    msgget, shmget.
    Non so voi, ma a me sembra molto piu' comunicativo CreateProcess o OpenSemaphore che fork oppure semget-semctl
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Originariamente inviato da XWolverineX
    Mamma mia le chiamate di sistema Unix sono orrende.

    msgget, shmget.
    Non so voi, ma a me sembra molto piu' comunicativo CreateProcess o OpenSemaphore che fork oppure semget-semctl
    Non tutti la pensano come te.. Per me é piu comoda una fork che una CreateProcess, che dopo il decimo argomento (per modo di dire ) mi ha gia rotto..

  8. #8
    fork() o pthread_create() rulez

    La CreateProcess di Windows mi ha sempre inorridito.
    Administrator of NAMDesign.Net

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466
    Originariamente inviato da LeaderGL
    fork() o pthread_create() rulez

    La CreateProcess di Windows mi ha sempre inorridito.

    che dopo il decimo argomento (per modo di dire )
    Neanche li avevo contati

  10. #10
    Originariamente inviato da simo_85
    É la CreateProcess.. Qui c'é un esempio:
    codice:
    /**
     * This program creates a separate process using the CreateProcess() system call.
     *
     * Figure 3.12
     *
     * @author Gagne, Galvin, Silberschatz
     * Operating System Concepts  - Eighth Edition
     * Copyright John Wiley & Sons - 2008.
     */
     
    #include <windows.h>
    #include <stdio.h>
    
    int main( VOID )
    {
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
    
        ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
        ZeroMemory( &pi, sizeof(pi) );
    
        // Start the child process.
        if( !CreateProcess( NULL,   // No module name (use command line).
            "C:\\WINDOWS\\system32\\mspaint.exe", // Command line.
            NULL,             // Process handle not inheritable.
            NULL,             // Thread handle not inheritable.
            FALSE,            // Set handle inheritance to FALSE.
            0,                // No creation flags.
            NULL,             // Use parent's environment block.
            NULL,             // Use parent's starting directory.
            &si,              // Pointer to STARTUPINFO structure.
            &pi )             // Pointer to PROCESS_INFORMATION structure.
        )
        {
            printf( "CreateProcess failed (%d).\n", GetLastError() );
            return -1;
        }
    
        // Wait until child process exits.
        WaitForSingleObject( pi.hProcess, INFINITE );
    
        // Close process and thread handles.
        CloseHandle( pi.hProcess );
        CloseHandle( pi.hThread );
    }
    Dal libro "Operating System Concepts" by Abraham Silberschatz.
    Lo devo trovare allora sul Silberschatz, sapresti dirmi a che capitolo era per caso? Oppure sapresti commentarmelo ?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.