feat: return exit code
This commit is contained in:
parent
16743edb4f
commit
7b1b49c2d1
2 changed files with 7 additions and 4 deletions
|
@ -6,12 +6,14 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
unsigned char invoke(struct Args args) {
|
unsigned char invoke(struct Args args) {
|
||||||
|
int status;
|
||||||
|
|
||||||
pid_t child = fork();
|
pid_t child = fork();
|
||||||
if (child == 0) {
|
if (child == 0) {
|
||||||
execvp(args.argv[0], args.argv);
|
execvp(args.argv[0], args.argv);
|
||||||
exit(errno);
|
exit(errno);
|
||||||
}
|
}
|
||||||
waitpid(child, NULL, 0);
|
wait(&status);
|
||||||
|
|
||||||
return 0;
|
return WEXITSTATUS(status);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,19 +7,20 @@
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
char *input_line;
|
char *input_line;
|
||||||
|
unsigned char exit_code = 0;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
printf("$ ");
|
printf("$ ");
|
||||||
input_line = read_a_line(stdin);
|
input_line = read_a_line(stdin);
|
||||||
if (input_line == NULL) {
|
if (input_line == NULL) {
|
||||||
return 0;
|
return exit_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Args args = parse(input_line);
|
struct Args args = parse(input_line);
|
||||||
free(input_line);
|
free(input_line);
|
||||||
|
|
||||||
if (args.argc > 0) {
|
if (args.argc > 0) {
|
||||||
invoke(args);
|
exit_code = invoke(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue