Difference between revisions of "ProvaPratica 2013.02.15"
Jump to navigation
Jump to search
Line 46: | Line 46: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | -Eduardo | + | -Eduardo<br> |
edit: avevo dimenticato un pezzo. | edit: avevo dimenticato un pezzo. |
Revision as of 04:31, 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 <dirent.h>
#include <string.h>
#include <unistd.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++){
if(access(entry[i]->d_name, X_OK)==0){ //Check execution rights
if((pid=fork())) ; //do nothing
else
execl(entry[i]->d_name, entry[i]->d_name, (char*)0);
}
}
return 0;
}
-Eduardo
edit: avevo dimenticato un pezzo.