Linux - Exec en funcion de argumentos

 
Vista:
Imágen de perfil de Miguel Ángel
Val: 8
Ha disminuido su posición en 4 puestos en Linux (en relación al último mes)
Gráfica de Linux

Exec en funcion de argumentos

Publicado por Miguel Ángel (5 intervenciones) el 10/05/2019 22:14:41
Hola a todos,

tengo que hacer un ejercicio en el cual tengo que sustuir las funciones de libreria sleep y system por llamadas al sistema (fork(), exec(), exit(), wait(), etc).

El problema me viene cuando tengo que ejecutar lo que haya dentro de cmd con exec en lugar de con system. No sé como dividir los argumentos ni como detallar el path de cada comando.

Alguien me podría ayudar? Por el momento tengo esto hecho: (aún me queda implantar el exec en lugar del system)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int main(int argc, char *argv[]) {
 
        char cmd[256];
	int a;
 
	if (argc<2){
		Error("Insufficient arguments: exec_in <sec> <cmd> [args...]");
        }
 
	pid_t x = fork();
 
        if(x==-1){
		perror("Fork error");
	}
 
	if(x==0){
		printf("I'm the son\n");
		sleep(atoi(argv[1]));
		cmd[0]='\0';
	}
 
	if(x>1){
		wait(0);
		printf("I'm the father\n");
		for(a=2;a<argc;a++){
			strcat(cmd,argv[a]);
			strcat(cmd," ");
		}
		system(cmd);
        }
 
	exit(0);
 
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Exec en funcion de argumentos

Publicado por Tom (482 intervenciones) el 21/05/2019 12:02:41
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
 
/* */
int main(int argc, char *argv[]) {
	if(!argv[1]) {
		fprintf(stderr, "Usage: %s cmd [args]\n", argv[0]);
		exit(1);
	}
	execvp(argv[1], &argv[1]);
	perror(argv[1]);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar