aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Strapp <strap012@umn.edu>2020-10-05 22:54:37 -0500
committerMatt Strapp <strap012@umn.edu>2020-10-05 22:54:37 -0500
commit38c4c82aaa32e89c54c3adfb4245217557dd0740 (patch)
treeec0168657939bf6b1a5a04e4e47e4a9dcdbd819c
parentAdd error handler for mappers (diff)
downloadcsci4061-38c4c82aaa32e89c54c3adfb4245217557dd0740.tar
csci4061-38c4c82aaa32e89c54c3adfb4245217557dd0740.tar.gz
csci4061-38c4c82aaa32e89c54c3adfb4245217557dd0740.tar.bz2
csci4061-38c4c82aaa32e89c54c3adfb4245217557dd0740.tar.lz
csci4061-38c4c82aaa32e89c54c3adfb4245217557dd0740.tar.xz
csci4061-38c4c82aaa32e89c54c3adfb4245217557dd0740.tar.zst
csci4061-38c4c82aaa32e89c54c3adfb4245217557dd0740.zip
Add error handling (Fixing #4 again)
-rw-r--r--P1/src/mapreduce.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/P1/src/mapreduce.c b/P1/src/mapreduce.c
index 2428f75..19cf937 100644
--- a/P1/src/mapreduce.c
+++ b/P1/src/mapreduce.c
@@ -38,14 +38,24 @@ int main(int argc, char *argv[]) {
char numMap[10];
sprintf(numMap, "%d", i);
execl("./mapper", "./mapper", &numMap, NULL);
+ printf("Mapper execution failed! Make sure \"mapper\" exists in the directory.\n");
+ return 4;
+ } else if (mapperPid == -1) {
+ printf("Fork failed!\n");
+ return 1;
}
}
for (int i = 0; i <= nMappers; i++) {
//Hopefully this works
- wait(NULL);
+ int waitError = wait(NULL);
+ if (waitError == -1)
+ {
+ printf("Wait failed!\n");
+ return 5;
+ }
}
-
+printf("Not stuck here.\n");
// ###### DO NOT REMOVE ######
// shuffle sends the word.txt files generated by mapper
@@ -57,7 +67,7 @@ int main(int argc, char *argv[]) {
}
sleep(1);
-
+printf("Not stuck here.\n");
pid_t reducerPid;
for (int i = 1; i <= nReducers; i++) {
@@ -66,12 +76,21 @@ int main(int argc, char *argv[]) {
char numRed[10];
sprintf(numRed, "%d", i);
execl("./reducer", "./reducer", &numRed, NULL);
+ printf("Reducer execution failed! Make sure \"reducer\" exists in the directory.\n");
+ return 3;
+ } else if (reducerPid == -1) {
+ printf("Fork failed!\n");
+ return 2;
}
}
for (int i = 0; i <= nReducers; i++) {
//Maybe this works too?
- wait(NULL);
+ int waitError = wait(NULL);
+ if (waitError == -1) {
+ printf("Wait failed!\n");
+ return 5;
+ }
}
return 0;