#include <unistd.h>
#include <wordexp.h>
#include <readline/readline.h>
#include <string.h>
int main(int argc, char** argv)
{
// ler um comando
char* cmd = readline("prompt: ");
// procurar o último ampersand (&)
char* ampp = strrchr(cmd, '&');
// Verificar se existia um ampersand no comando
if(ampp)
{
// Certificar que depois do último ampersand só tem espaços e/ou tabs
if(strspn(ampp, "& \t") == strlen(ampp)); // *
{
// "Cortar" a string no ampersand
ampp[0] = '\n';
}
else
{
fprintf(stderr, "syntax error\n");
}
// Lançar um processo novo
if(fork())
{
wordexp_t words;
// Separar os argumentos
wordexp(cmd, &words, 0);
// Executar o comando
execvp(words.we_wordv[0], words.we_wordv);
}
else
{
// Continuar a correr a shell...
}
}
else
{
// execução normal
}
free(cmd);
return 0;
}