1
Calculator for Spawn
A calculator child program adapted for use with the Windows spawn functions.
calculator.c54 lines
/*
* calculator.c — Calculator for Windows spawn examples
*
* Key concepts: Simple calculator, used as child process by main.c
* Compile: gcc -o calculator calculator.c
* Run: ./prog
*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("\n");
printf("========================================\n");
printf(" Calculator for Windows spawn example\n");
printf("========================================\n\n");
if (argc != 4) {
//recived the following arguments:
printf("argc in calculator: %d\n", argc);
for (int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
fprintf(stderr, "Usage: %s <num1> <operator> <num2>\n", argv[0]);
return 1;
}
int num1 = atoi(argv[1]);
char operator = argv[2][0];
int num2 = atoi(argv[3]);
int result;
switch (operator) {
case '+': result = num1 + num2; break;
case '-': result = num1 - num2; break;
// the * is a "wildcard" in the shell, so we cant use it as an argument
// case '*': result = num1 * num2; break;
case 'X': result = num1 * num2; break;
case '/':
if (num2 == 0) {
fprintf(stderr, "Error: Division by zero\n");
return 1;
}
result = num1 / num2;
break;
default:
fprintf(stderr, "Error: Unknown operator '%c'\n", operator);
return 1;
}
printf("[Calculator] %d %c %d = %d\n", num1, operator, num2, result);
printf("\n========================================\n");
return 0;
}Expected Outputclick Run to execute live
======================================== Calculator for Windows spawn example ======================================== argc in calculator: 1 argv[0]: ./calculator Usage: ./calculator <num1> <operator> <num2>