Ejercicio duda procesos hijos
Publicado por Miguel Ángel (2 intervenciones) el 27/05/2019 17:52:32
Hola a todos, tengo que hacer un ejercicio que no termino de sbaer como hacer. Debajo voy a dejar el enunciado y en negrita voy a remarcar las partes que creo que no se hacer.
Escribid un programa en lenguaje C que, utilizando las llamadas al
sistema Unix vistas en la asignatura, comprima una serie de ficheros.
El programa recibirá por la lı́nea de comandos (vector argv) la lista
de ficheros a comprimir. Para cada fichero será preciso crear un proce-
so hijo y ejecutar la orden gzip redireccionando su entrada estándar
al fichero a comprimir y la salida estándar al fichero /tmp/pid.x,
donde pid es el identificador del proceso que ejecuta el programa y x
es la posición, dentro del vector argv, del fichero a comprimir. Será
preciso ejecutar todas las compresiones concurrentemente y, a medi-
da que finalicen, el programa deberá mostrar un mensaje indicando
el nombre del fichero que ya está comprimido.
Yo lo haría así:
Me urge un poco la verdad, espero vuestras respuestas. Un saludo y gracias de antemano!
Escribid un programa en lenguaje C que, utilizando las llamadas al
sistema Unix vistas en la asignatura, comprima una serie de ficheros.
El programa recibirá por la lı́nea de comandos (vector argv) la lista
de ficheros a comprimir. Para cada fichero será preciso crear un proce-
so hijo y ejecutar la orden gzip redireccionando su entrada estándar
al fichero a comprimir y la salida estándar al fichero /tmp/pid.x,
donde pid es el identificador del proceso que ejecuta el programa y x
es la posición, dentro del vector argv, del fichero a comprimir. Será
preciso ejecutar todas las compresiones concurrentemente y, a medi-
da que finalicen, el programa deberá mostrar un mensaje indicando
el nombre del fichero que ya está comprimido.
Yo lo haría así:
1
2
3
4
5
6
7
8
9
int main(int argc, char *argv[]){
for(f=0; f<argc; f++){
if(fork()==0){
//aqui es donde comprimo, pero no se como hacerlo.
break;
}
}
Me urge un poco la verdad, espero vuestras respuestas. Un saludo y gracias de antemano!
Valora esta pregunta


0