Я должен создать оболочку linux, используя C. Ниже мой код:
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#define SHELL "/bin/sh"
#include "extern.h"
int mysystem (char *command)
{
int status;
pid_t pid;
pid = fork ();
if (pid == 0)
{
execl (SHELL, SHELL, "-c", command, NULL);
_exit (EXIT_FAILURE);
}
else if (pid < 0)
status = -1;
else
if (waitpid (pid, &status, 0) != pid)
status = -1;
return status;
}
Все правильно, когда я тестирую код, используя разные команды, такие как "ls", "man" и т. Д., Но когда я использую блокнот для создания тестового файла, содержащего следующее:
echo "hello"
exit 2
код возврата получается 512
, когда он должен быть просто 2
.
Может кто-нибудь помочь мне исправить мой код?