ProvaPratica 2009.06.23
Revision as of 14:20, 5 May 2014 by Stefano 92 (talk | contribs) (Created page with "<h1>http://www.cs.unibo.it/~renzo/so/pratiche/2009.06.23.pdf</h1> == Esercizio 1 == <syntaxhighlight lang="C"> /* Esercizio1 (obbligatorio): (15 punti) Scrivere un programm...")
http://www.cs.unibo.it/~renzo/so/pratiche/2009.06.23.pdf
Esercizio 1
/*
Esercizio1 (obbligatorio): (15 punti) Scrivere un programma in linguaggio C denominato “scriptexec” che venga
richiamato con un solo parametro: il nome di un file che contiene un elenco di comandi con i rispettivi parametri, uno per
riga.
Le righe che iniziano per '#' sono commenti.
Il programma esegue uno dopo l'altro i comandi presenti nel file.
(E' vietato l'uso di chiamate quali system o popen).*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char* argv[])
{
if (argc!=2)
{
printf("Usage: ./scriptexec COMMAND_FILE\n");
return(1);
}
FILE* fp;
char* buf= NULL;
int ris=0,ris_fork=0;
unsigned long size=0;
fp=fopen(argv[1],"r");
if(fp == NULL)
{
printf("FILE NON ESISTENTE\n");
return -1;
}
while ((ris=getline(&buf,&size,fp)!=-1))
{
if (buf[0]!='#')
{
ris_fork= fork();
if (ris_fork == 0)
execl("/bin/sh","/bin/sh","-c",buf,0);
else
wait(&ris_fork);
}
}
}
-stefano92