#include #include #include #include #include #include using namespace std; #define FILE_NOT_EXIST -1 #define EXECUTABLE 0 #define NOT_EXECUTABLE 1 int check_executable(char *filename) { struct stat buf; int j = stat(filename, &buf); if (j == (-1)) return FILE_NOT_EXIST; if (buf.st_mode & 0111) return EXECUTABLE; return NOT_EXECUTABLE; } main(int argc, char * argv[]) { if (argc != 2) { cerr << "Usage: a.out file\n"; exit(1); } int ret = check_executable(argv[1]); if (ret == FILE_NOT_EXIST) { cout << "File " << argv[1] << " does not exist.\n"; } else if (ret == EXECUTABLE) { cout << "File " << argv[1] << " is an executable.\n"; } else cout << "File " << argv[1] << " is NOT an executable.\n"; }