TECN.PROG.SIST.INF. Creazione di un processo in Windows. Roberta Gerboni

Documenti analoghi
Capitolo 3 -- Silberschatz

Concetto di processo. Processi. Immagine in memoria di un processo. Stati di un processo. Un SO esegue una varietà di attività:

Processi: 1. Modelli a stati 2. Rappresentazione di processi 3. Liste di processi e scheduling 4. Processi in sistemi operativi attuali (NT/UNIX)

Programmazione di Sistema

TECN.PROG.SIST.INF. Processi e thread. Roberta Gerboni

Esercitazione: Utilizzo delle Pipe

Sistemi Operativi Laurea in Ingegneria Informatica Sapienza Universita di Roma Docente: Francesco Quaglia

Laboratorio di Sistemi Operativi

Sistemi Operativi Laurea in Ingegneria Informatica Universita di Roma Tor Vergata Docente: Francesco Quaglia

Sistemi Operativi. Descrizione e controllo dei processi

Sistemi Operativi. Descrizione e controllo dei processi

Sistemi Operativi. Descrizione e controllo dei processi

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Laboratorio di Sistemi Operativi

Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX)

Principles of Concurrent Programming

Pipes e named pipes: 1. Nozioni preliminari 2. Pipes e named pipes (FIFO) in sistemi UNIX 3. Pipes e named pipes sistemi Windows

Tipi strutturati - struct

Programmazione modulare

C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW

TECN.PROG.SIST.INF. TCP concorrente in Windows. Roberta Gerboni

Fondamenti di informatica, Sez. Ing. Informatica, Ing. Gestionale, Ing. Ambientale II prova in itinere, 29 Gennaio 2009

Algoritmo di ordinamento per sostituzione. Esempio : dato l array :

Sistemi Operativi (M. Cesati)

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

/* Classe : Officina. Autore : Riontino Raffaele 4*informatici corso serale ITIS Molinari - Milano 29/05/2011

Corso di Fondamenti di Informatica II

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; };

BREVE INTRODUZIONE ALLA PROGRAMMAZIONE IN C++ E MATHEMATICA

Il paradigma OO e le Classi

STUDIO DI BUFFER OVERFLOW IN AMBIENTE WIN32 E REALIZZAZIONE DI UN TOOL PER LA RICERCA AUTOMATICA DI PROGRAMMI VULNERABILI A QUESTO TIPO DI ATTACCO

Ricerca binaria (o dicotomica) di un elemento in un vettore

Classe Squadra. #include <iostream> using namespace std;

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Concetto di stream. c i a o \0. c i a o \0. c i a o \0

Informatica e Laboratorio di Programmazione C++ stream Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Addendum alle chiamate di sistema per la gestione processi. E Mumolo

4. Accesso diretto per gli archivi con record a lunghezza costante

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Sistemi Operativi Teledidattico

il tipo di parallelismo dipende dal grado di cooperazione

Fondamenti di Informatica Ing. Biomedica

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Fattorizzazione e curve ellittiche polinomi di II, II e IV grado

Sistemi Operativi (M. Cesati)

Algoritmo di ordinamento per scambio (a bolle o bubble sort)

#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; };

1.1 of :05:39

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

eccezioni Alberto Ferrari Alberto Ferrari Programmazione di applicazioni SW

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Introduzione al C++ Corso di C++ INFN LNS 13 Dicembre Corrado Santoro

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire..

TECN.PROG.SIST.INF. Server Web Roberta Gerboni

Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012

Laboratorio di Informatica

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Informatica e Laboratorio di Programmazione C++ Object Oriented Programming Alberto Ferrari

Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia

L AMBIENTE CODE BLOCKS E L IO

Esercitazione sui segnali

Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 02/04/2014/ Appello straordinario/ Foglio delle domande / VERSIONE 1

Question 1: introduction to computer programming

Grammatica di base: esempio

Passaggio di parametri per valore

ACSO Programmazione di Sistema e Concorrente

Sistemi Operativi (M. Cesati)

INFORMATICA File di testo in C Roberta Gerboni

Directory. Le directory unix sono file.

Seconda Esercitazione. Gestione di processi in Unix Primitive Fork, Wait, Exec

Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti

Principles of Concurrent Programming

Istruzioni Condizionali

Prova Scritta del 20/09/10

Programmazione ad Oggetti C++

1: /* Nome del programma: numero_giorni_01.cpp - Data: 03/04/2010 2: Realizzato da: Gaetano Della Cerra - III Informatica Serale I.T.I.S.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

L organizzazione dei programmi

La programmazione ad oggetti (Parte 1)

SISTEMI IN TEMPO REALE

Char e bool. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Thread Standard IEEE POSIX c

Laboratorio di Informatica

Se vogliamo cambiarlo: i dati vengono sovrascritti. 300 White Jones (vecchio valore) 300 Worthington 0.00

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

L AMBIENTE CODE BLOCKS E L IO

Introduzione C++ Compilatori Librerie Usare oggetti

Informatica I Facoltà di Ingegneria

Pag. 1. modello di esecuzione parallela

System call per la gestione di processi

System call per la gestione di processi

Corso di Programmazione Concorrente Processi. Valter Crescenzi

Laboratorio di Sistemi Operativi

Il sistema operativo LINUX Semafori. Semaforo. Sommario. Sommario. Uso delle pipe. Gestione di semafori tramite pipe. Sistemi operativi Modulo II

Transcript:

Roberta Gerboni

// Funzione delle API di Windows // Crea un nuovo processo e il relativo thread primario. // Il nuovo processo viene eseguito nel contesto di protezione // del processo chiamante BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpapplicationname, _Inout_opt_ LPTSTR lpcommandline, _In_opt_ LPSECURITY_ATTRIBUTES lpprocessattributes, _In_opt_ LPSECURITY_ATTRIBUTES lpthreadattributes, _In_ BOOL binherithandles, _In_ DWORD dwcreationflags, _In_opt_ LPVOID lpenvironment, _In_opt_ LPCTSTR lpcurrentdirectory, _In_ LPSTARTUPINFO lpstartupinfo, _Out_ LPPROCESS_INFORMATION lpprocessinformation); http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx 2

SAL - Source-code Annotation Language È un linguaggio che fornisce una serie di annotazioni per descrivere come una funzione utilizza i parametri. Il file intestazione <sal.h> definisce le annotazioni. È utilizzato in Visual C ++ in Visual Studio 2012, per ridurre i difetti del codice C / C++. Utilizzare il linguaggio SAL è un modo conveniente per consentire al compilatore di controllare il codice automaticamente e poter rilevare degli errori. Per i puntatori le annotazioni possono essere ad esempio: _In In_opt Out Out_opt Inout Inout_opt_ 3

Programma in C++ che visualizza il proprio PID // ProcessoFiglio.cpp #include <iostream> #include <windows.h> using namespace std; int main() { // visualizza il Process ID assegnato dal sistema cout <<"\n =======> Inizia l'esecuzione del processo con PID: "<<GetCurrentProcessId( )<<endl; cout <<"\n Sono il processo FIGLIO"<<endl; cout<<" ================== Fine esecuzione processo con PID: " <<GetCurrentProcessId()<<endl; cout<<endl; system ("pause"); } 4

// ProcessoPadre.cpp //Creazione di un processo con una funzione di Windows // (API-Application Programming Interface ) // Consente di creare un processo figlio e il nuovo processo creato è indipendente dal // processo padre pur esistendo una relazione padre-figlio. #include <iostream> #include <windows.h> using namespace std; Programma in C++ che crea un processo figlio int main( int argc, CHAR *argv[] ) { cout <<"\n ---> IO sono il processo PADRE con PID: "<<GetCurrentProcessId()<<endl; STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); 5

if( argc!= 2 ) { printf("\nusage: %s [cmdline]\n", argv[0]); system("pause"); return EXIT_FAILURE; } // Start the child process. if(!createprocess( NULL, // No module name (use command line) argv[1], // 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 ) Programma in C++ che crea un processo figlio { printf( "\ncreateprocess failed (%d).\n", GetLastError() ); system("pause"); return EXIT_FAILURE; } 6

Programma in C++ che crea un processo figlio } // Wait until child process exits. WaitForSingleObject( pi.hprocess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hprocess ); CloseHandle( pi.hthread ); Listato completo del programma con messaggi per visualizzare alcuni campi significativi durante l esecuzione del programma 7

Struttura _STARTUPINFO // Specifies the window station, desktop, standard handles, and appearance // of the main window for a process at creation time. typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpreserved; LPTSTR lpdesktop; LPTSTR lptitle; DWORD dwx; DWORD dwy; DWORD dwxsize; DWORD dwysize; DWORD dwxcountchars; DWORD dwycountchars; DWORD dwfillattribute; DWORD dwflags; WORD wshowwindow; WORD cbreserved2; LPBYTE lpreserved2; HANDLE hstdinput; HANDLE hstdoutput; HANDLE hstderror;} STARTUPINFO, *LPSTARTUPINFO; 8

Struttura _PROCESS_INFORMATION // Contains information about a newly created process and its primary thread. // It is used with the CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, // or CreateProcessWithTokenW function. typedef struct _PROCESS_INFORMATION { HANDLE hprocess; HANDLE hthread; DWORD dwprocessid; DWORD dwthreadid; } PROCESS_INFORMATION, *LPPROCESS_INFORMATION; 9