Difference between revisions of "ProvaPratica 2013.02.15"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
|  (Created page with "Esercizio 1 del 2013.02.15 <syntaxhighlight lang="C"> /*  *	Prova Pratica di Lab SO 2013.02.15  *	http://www.cs.unibo.it/~renzo/so/pratiche/2013.02.15.pdf  *	Es.1  *	Eduardo S...") | |||
| Line 2: | Line 2: | ||
| <syntaxhighlight lang="C"> | <syntaxhighlight lang="C"> | ||
| /* | /* | ||
| − |   *	Prova Pratica di Lab SO 2013.02.15 | + |   *  Prova Pratica di Lab SO 2013.02.15 | 
| − |   *	http://www.cs.unibo.it/~renzo/so/pratiche/2013.02.15.pdf | + |   *  http://www.cs.unibo.it/~renzo/so/pratiche/2013.02.15.pdf | 
| − |   *	Es.1 | + |   *  Es.1 | 
| − |   *	Eduardo Santarelli | + |   *  Eduardo Santarelli | 
|   */ |   */ | ||
| #include <stdio.h> | #include <stdio.h> | ||
| Line 14: | Line 14: | ||
| #include <stdlib.h> | #include <stdlib.h> | ||
| − | /*	Selector function, called by scandir. Only selects | + | /*  Selector function, called by scandir. Only selects | 
| − |   *	palindrome file names. Discards implied directories. | + |   *  palindrome file names. Discards implied directories. | 
|   */ |   */ | ||
| int dir_is_pal(const struct dirent* dir){ | int dir_is_pal(const struct dirent* dir){ | ||
|    int i,j; |    int i,j; | ||
| − | + |   //discard implied dirs | |
| − | + |   if(dir->d_name[0]=='.' && strlen(dir->d_name)<3) | |
| − | + |     return 0; | |
|    for(i=0, j=strlen(dir->d_name)-1; i<j; i++, j--) |    for(i=0, j=strlen(dir->d_name)-1; i<j; i++, j--) | ||
| Line 32: | Line 32: | ||
| int main(int argc, char** argv){ | int main(int argc, char** argv){ | ||
| − | + |   struct dirent** entry; | |
| − | + |   int i, items; | |
| − | + |   pid_t pid; | |
| − | + |   items=scandir("./", &entry, dir_is_pal, alphasort); | |
| − | + |   for(i=0; i<items; i++){ | |
| − | + |     int status; | |
| − | + |     if((pid=fork())) ; //do nothing | |
| − | + |     else | |
| − | + |       execl(entry[i]->d_name, entry[i]->d_name, (char*)0); | |
| − | + |   } | |
| − | + |   return EXIT_SUCCESS; | |
| } | } | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
| -Eduardo | -Eduardo | ||
Revision as of 03:20, 12 December 2013
Esercizio 1 del 2013.02.15
/*
 *  Prova Pratica di Lab SO 2013.02.15
 *  http://www.cs.unibo.it/~renzo/so/pratiche/2013.02.15.pdf
 *  Es.1
 *  Eduardo Santarelli
 */
#include <stdio.h>
#include <errno.h>
#include <dirent.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
/*  Selector function, called by scandir. Only selects
 *  palindrome file names. Discards implied directories.
 */
int dir_is_pal(const struct dirent* dir){
  int i,j;
  //discard implied dirs
  if(dir->d_name[0]=='.' && strlen(dir->d_name)<3)
    return 0;
  for(i=0, j=strlen(dir->d_name)-1; i<j; i++, j--)
    if(dir->d_name[i]!=dir->d_name[j])
      return 0;
  return 1;
}
int main(int argc, char** argv){
  struct dirent** entry;
  int i, items;
  pid_t pid;
  items=scandir("./", &entry, dir_is_pal, alphasort);
  for(i=0; i<items; i++){
    int status;
    if((pid=fork())) ; //do nothing
    else
      execl(entry[i]->d_name, entry[i]->d_name, (char*)0);
  }
  return EXIT_SUCCESS;
}
-Eduardo