Added base Pish from slides and fixed Makefile

This commit is contained in:
TriantaTV 2022-10-10 18:55:22 -05:00
parent e314d06c21
commit 31b5a5cbb5
6 changed files with 53 additions and 3 deletions

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
bin/pish

Binary file not shown.

0
include/.keep Normal file
View File

8
include/Pish.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef PISH_H
#define PISH_H
char* getcmd(void);
void exec(char* command);
void Pish(void);
#endif

42
src/Pish.c Normal file
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);
}
}
}

View File

@ -1,6 +1,6 @@
#include <stdio.h> #include "Pish.h"
int main() int main()
{ {
printf("Hello world\n"); Pish();
} }