🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
2 messages
2 total messages Started by slinux Mon, 10 Oct 2005 18:41
Re: ayuda con shell scripting
#1513
Author: slinux
Date: Mon, 10 Oct 2005 18:41
22 lines
2065 bytes
una ayudita rapida x ahi??

necesito  crear un programa capaz de interpretar comandos utilizando las siguientes funciones de C:

   1. La funci�n fgets sirve para leer comandos (desde la l�nea de comandos).
   2. La funci�n strtok sirve para separar palabras dentro de una frase.
   3. La funci�n fork sirve para crear nuevos procesos.
   4. La funci�n execvp sirve para ejecutar programas mediante llamadas al sistema.

El programa debe ser capaz de leer una l�nea de comandos con argumentos, separarlas en palabras con el strtok, ejecutar el comando con el fork + execvp, esperar que �ste acabe y leer la siguiente l�nea

gracias de antemano


-- 
slinux 

------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-422766.html

Enviado desde http://www.softwaremix.net
Re: ayuda con shell scripting
#1514
Author: Carlos
Date: Tue, 11 Oct 2005 01:23
42 lines
2004 bytes
slinux wrote:
> una ayudita rapida x ahi??

claro que s�, para eso estamos.

> necesito  crear un programa capaz de interpretar comandos utilizando
> las siguientes funciones de C:

[...] (fgets, strtok, fork, execvp)

> El programa debe ser capaz de leer una l�nea de comandos con
> argumentos, separarlas en palabras con el strtok, ejecutar el comando
> con el fork + execvp, esperar que �ste acabe y leer la siguiente
> l�nea

aj�. algo como esto:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

int main()
{
         char linea[34421];
         while (fgets(linea,34421,stdin)) {
                 pid_t pid;
                 if (pid=fork()) { if (pid>0) wait(0); }
                 else {
                         char *palabras[17210],*s=linea; int i=0;
                         while (palabras[i++]=strtok(s, " \t\n")) { s=0; }
                         execvp(palabras[0], palabras); exit(1);
                 }
         }
         return 0;
}

> gracias de antemano

por nada, por nada. que te aproveche.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads