Added base Pish from slides and fixed Makefile

This commit is contained in:
2022-10-10 18:55:22 -05:00
parent e314d06c21
commit 31b5a5cbb5
6 changed files with 53 additions and 3 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ main:
gcc $(INC) -c -o build/Pish.o src/Pish.c gcc $(INC) -c -o build/Pish.o src/Pish.c
exec: exec:
gcc -o bin/pish build/*.o gcc -o bin/pish.out build/*.o
clean: clean:
rm build/* rm build/*
BIN
View File
Binary file not shown.
View File
+8
View File
@@ -0,0 +1,8 @@
#ifndef PISH_H
#define PISH_H
char* getcmd(void);
void exec(char* command);
void Pish(void);
#endif
+42
View File
@@ -0,0 +1,42 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include "Pish.h"
// Dummy function for Pish to run
char* getcmd(void)
{
;
}
// Dummy function for Pish to run
void exec(char* command)
{
;
}
void Pish(void)
{
while (1)
{
char *cmd = getcmd();
int retval = fork();
if (retval == 0)
{
// This is the child process
// Setup the child's process environment here
// E.g., where is standard I/O, how to handle signals?
exec(cmd);
// exec does not return if it succeeds
printf("ERROR: Could not execute %s\n", cmd);
exit(1);
} else {
// This is the parent process; Wait for the child to finish
int pid = retval;
wait(pid);
}
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
#include <stdio.h> #include "Pish.h"
int main() int main()
{ {
printf("Hello world\n"); Pish();
} }