Ayuda con Asignatura de Linux

Me piden lo siguiente :

1-)Escribir un shellscript que cada N segundos compruebe si un usuario está conectado en la maquina. Añadir el tratamiento necesario para verificar que el identificador del usuario corresponda a un usuario REAL de la maquina.En caso de que no corresponda el shellscript ha de finalizar su ejecucion (pista: el fichero /etc/passwd contiene informacion de los usuarios dados de alta en la maquina). El numero de segundos y el Id. del suaurio se pasaran, como parametros, de la linea de comandos


2-)Escribir un programa en lenguaje C que cree tres procesos y que, cada vez que se ejecute genere los mensajes de salida siguiente y en el mismo orden:

"Mensaje 1 Proceso Padre con PID X"
"Mensaje 1 Proceso HIJO 1 con PID Y"
"Mensaje 2 Proceso HIJO 1 con PID Y"
"Mensaje 2 Proceso Padre con PID X"
"Mensaje 1 Proceso HIJO 2 con PID Z"
"Mensaje 2 Proceso HIJO 2 con PID Z"
"Mensaje 3 Proceso Padre con PID X"

Se han de utilizar llamadas al sistema de gestion de procesos como : 'fork' 'exit' 'getpid', etc.. y otras de entrada/salida como :'read' y 'write' sobre la entrada y salida standart. Así mismo se pueden usar funciones de la libreria de 'C' que pueden ser utiles como p.ej.: 'sscanf'


A ver si me echais una mano, porque voy perdido o bien es que tengo tanto lio que ya no se por donde cogerlo.
Tengo que entregarlo este Miercoles para poder tener derecho a examen [tomaaa] [tomaaa]

EDITO PARA BROMISTAS


-NO QUIERO QUE NADIE ME HAGA LA PRACTICA SOLO PIDO AYUDA





-
Yo te lo hago, no te preocupes.

PD: El precio si eso, mejor lo acordamos ya por privado.
bastian escribió:Yo te lo hago, no te preocupes.

PD: El precio si eso, mejor lo acordamos ya por privado.


Ok, gracias socio, pero que sea en cervezas, que la economia anda justa ;-)


P.D.: Se me olvidaba, las respuestas han de ser razonadas, eso evidentemente ya lo haré yo, pero dadme algunas pistas de como lo haceis.

Assiasss


-
Me parece que no lo has pillado.

Tú no quieres pistas, las pistas ya las tienes en el propio enunciado. Tú lo que quieres es que te hagan la práctica, y aquí nadie te la va a hacer (te lo digo por experiencia, no eres el primero, ni serás el último). Si decides intentar hacerlas y tienes problemas concretos, vuelve, pregunta demostrando que lo has intentado y puede que te ayuden con ellos. Hacerte una práctica por la cara, no.

Un saludo.
bastian escribió:Me parece que no lo has pillado.


Era dificil pillarlo con tu respuesta inicial.


Tú no quieres pistas, las pistas ya las tienes en el propio enunciado. Tú lo que quieres es que te hagan la práctica, y aquí nadie te la va a hacer


No señor, yo no quiero que me hagan la practica, he puesto que "alguien me eche una mano", no que alguien me la haga.
Como no me conoces puede que pienses eso, pero ya llevo bastante tiempo en este foro para haberlas visto de todos los colores.
Seria del genero tonto que alguien me haga la practica entera, si luego tengo que ir a examen, no crees ??
O tambien piensas que pediré a un EOLiano que se presente por mi ??

Si decides intentar hacerlas y tienes problemas concretos, vuelve, pregunta demostrando que lo has intentado y puede que te ayuden con ellos.


Vaya, muy amable, y como se supone que etngo que demostrar que lo he intentado ??
No se....me haceis algunas preguntas tipo test ?? y si las respondo entoces me ayudais ??

Hacerte una práctica por la cara, no.




No gracias, no soy de esos.
Aunque con el tiempo que has malgastado en tu broma ya podias haberme iluminado con tu sapiencia, y para otra ocasion en lugar de contestar pasa de largo o bien pon el tan manido :
MODE IRONIC ON para saber que estabas de cachondeo con tu "oferta"

Un saludo.


Igualmente




-
Ayudadlo al pobre hombre...
Vorlander escribió:Era dificil pillarlo con tu respuesta inicial.

Igual de difícil que saber que realmente has intentado hacer las prácticas.

No señor, yo no quiero que me hagan la practica, he puesto que "alguien me eche una mano", no que alguien me la haga.
...
Vaya, muy amable, y como se supone que etngo que demostrar que lo he intentado ??
No se....me haceis algunas preguntas tipo test ?? y si las respondo entoces me ayudais ??

Puedes empezar por poner lo que has hecho, donde te falla, que no entiendes... Porque tienes dos prácticas distintas y de ninguna de las dos has puesto algo que demuestre que de verdad les has dedicado un minuto.

Aunque con el tiempo que has malgastado en tu broma ya podias haberme iluminado con tu sapiencia, y para otra ocasion en lugar de contestar pasa de largo o bien pon el tan manido :
MODE IRONIC ON para saber que estabas de cachondeo con tu "oferta"

El tiempo que malgaste es problema mío, y si llevas tiempo en el foro, como dices, ya deberías saber que la gente postea donde le viene en gana, y si no te gusta, lo siento. Para moderar, ya están los moderadores. Así que en vez de decirme como tengo que responder, aprende a preguntar, y saldrás ganando, sobre todo porque eres tú el que necesita ayuda.

Un saludo.
Ver qué tienes hecho de código y qué tipo de cosas no te funcionan explicando qué cosas has intentado y por qué no eres capaz de terminarlo son claros signos de alguien que quiere ser ayudado.

Yo no tengo problemas en AYUDARTE, si realmente lo necesitas. (ver párrafo anterior)
Yo te puedo dar una pista sobre el primero.
El archivo /var/log/user.log puede decirte algo sobre cuando entra algún usuario en el sistema.

Saludos ;)
bastian escribió:Igual de difícil que saber que realmente has intentado hacer las prácticas.


No sabia que para preguntar en este foro tenia que justificar nada.
Lo tendré en cuenta para futuras preguntas.


El tiempo que malgaste es problema mío, y si llevas tiempo en el foro, como dices, ya deberías saber que la gente postea donde le viene en gana, y si no te gusta, lo siento.


No quiero polemicas, solo pedia ayuda

Para moderar, ya están los moderadores.


No quiero polemic......... ZzZzZzZzzzzzzzz

Así que en vez de decirme como tengo que responder, aprende a preguntar, y saldrás ganando


No quiero pol .............. ZzZzZzZzzzzzzzz

, sobre todo porque eres tú el que necesita ayuda.

Un saludo.


Bueno parece que estamos de acuerdo en algo, así que por favor abandona el hilo o ayudame, que ya hemos desvirtuado suficienteme el topic de este hilo.

Posteo lo que llevo hecho del 1er ejercicio.
No se como controlar lode que cada N segundos compruebe si el usuario esta conectado o no:

R: trap 'echo Han premut control-C; exit' 2
R:
R: if test $# -ne 2
R: then
R:    echo Nombre de paràmetres incorrecte
R:    echo Ús correcte: $0 nombre_segons usuari
R:    exit
R: fi
R:
R: if cut -d: -f1 /etc/passwd | grep \^$2\$ >/dev/null
R: then
R:    echo Usuari $2 és al fitxer de passwords
R: else
R:    echo Usuari $2 no és al fitxer de passworwds
R:    exit
R: fi
R:
R: while true
R: do
R:    if who|grep \^$2" " >/dev/null 
R:    then
R:       echo usuari connectat
R:    else



A ver, ya ha quedado claro antes que no me va a hacer la practica nadie, pero podriais ser UN POQUITO mas especificos.

Para visitar otros foros/links/webs ya se usar el google.
Lo que necesito es la explicacion de como hacerlo, pero de tu a tu, Eolian Style pa que me entendais.

Si no se puede preguntar, o alguna norma os impide ayudar un pcoo mas "alla" de dar links o gastar bromas decidlo claramente, ya buscaré otro lugar donde pedir ayuda.

Es que de verdad no lo entiendo, yo cuando ha sido mi turno he ayudado a quien ha hecho falta y no me pongo tan "tiquismiquis".


Ale, ya lo dejo hasta mañana, que me sale humo de la cabeza, y el de 'C? ni lo he empezado. (tranquilos, no es una peticion encubierta ni nada...)



-
Si no vas a leer lo que te pasemos, ¿por qué cojones nos haces perder el tiempo con dos chorradas de programitas que se hacen en 7 minutos?
Me parece qe el link qe te han dejado lo deja todo bastante clarito...
Hombre, yo me he leido los dos enunciados, y no parecen nada que dedicandole un poquito de tiempo (pongamos 1 hora maximo maximo) no se pueda sacar. A poco de apuntes que tengas (que digo yo que los tendras si es para una asignatura) y sobre todo google, se sacan bien.

Como dices que nadie te haga la práctica, pues la gente se lo esta tomando al pie de la letra, cuando preguntes dudas especificas, entonces ya se animará alguien a contestar.
Vorlander escribió:No quiero polemicas, solo pedia ayuda
....
No quiero polemic......... ZzZzZzZzzzzzzzz
....
No quiero pol .............. ZzZzZzZzzzzzzzz

Pues si a no querer polémica le llamas despreciar la ayuda que se te da y encenderte con los que te echan una mano...

Bueno parece que estamos de acuerdo en algo, así que por favor abandona el hilo o ayudame, que ya hemos desvirtuado suficienteme el topic de este hilo.

Te repito que no me tienes que decir lo que he de hacer o no. Si he seguido en el hilo, ha sido con la intención de ayudarte, tan sólo esperaba que hicieses las cosas bien, pero veo que eres incapaz. Aquí, la mayoría puede resolverte eso en un momento. Yo mismo tengo tu segunda práctica (o una muy parecida) por aquí del año pasado, pero no te la iba a pegar tal cual. Esperaba enseñarte algo, (iluso de mí) pero si no eres capaz de mirar tan siquiera un link que te pasan resolviendo lo que HAS PEDIDO explícitamente, ya me dirás tú. Pista más grande que eso... Hacértelo, pero ya has dicho que no querías eso.

Además, el sleep parece que ya lo sabes usar zZZzzzZZZzz [maszz] :P

De todas formas, no te preocupes, no intervendré más, pero me quedo por aquí a ver como acaba esto. :D
desagradecido!

para el primer ejecicio, 'sleep' es lo que necesitas entre ejecuciones. y te lo digo asi porque ya tienes al menos el codigo...

con respecto al segundo ejercicio... 'man fork'
Pediros disculpas a ambos.

Ayer llevaba ya varias horas intentando sacar algo en claro y los nervios me traicionaron.
Sobre todo a Ferdy, pues ya venia encendido de la bromita de bastian.
No obstante aclarar un par de puntos.
SI visité el link donde explicaban el uso del sleep, pero el cansancio, o el mal humor me impedian entender como usar la funcion en mi shellscript.
En ningun momento quise dar a entender que ni siquiera habia visitado el link, pues fué lo primero que hice, aunque una vez visitado y ver una simple explicacion del comando en ingles me dio la sensacion de que hubiera sido lo mismo hacer un "man sleep" que visitar ese link, de ahí mi contestacion.

Hoy tengo todo el dia por delante, y aun cuando algunos de vosotros lo veais de manera sencilla, no todos tenemos la misma facilidad que otros.
A mi, al menos esta practica se me ha atragantado, y debo estar bloqueado porque por mas vueltas que le doy no se por donde continuar.

Que quede claro, que no apruebo mi actitud de ayer, solo espero que sepais "contextualizarla".


Saludos


-
Vorlander, en el manual de la asignatura "doc_shell_cat.pdf", esta todo lo que necesitas saber para crear el script.

Saludos de un compañero (puede que tambien de aula??)

[beer]
ozono escribió:Vorlander, en el manual de la asignatura "doc_shell_cat.pdf", esta todo lo que necesitas saber para crear el script.


Je je je, he memorizado ese documento de arriba a abajo.
Pero una cosa es la teoria y otra es aplicarla en un script.

Saludos de un compañero (puede que tambien de aula??)

[beer]


Dificil, pero posible, como la llevas tu ??
Pasame por MP en que aula estás, y a ver si tu lo llevas mejor que yo y me "iluminas"

[beer]
Ah... no prob.

Por otro lado, HAY diferencias entre un 'man sleep' , un 'help sleep' y el link que te pasé.

man sleep - Documentación del sleep que vino en coreutils
help sleep - Documentación del built-in the Bash llamado sleep
el link - Documentación POSIX sobre sleep

Para estar seguro acerca de la portabilidad, es interesante utilizar el link siempre.

Saludos.Ferdy

-------

[ $ ~ ] make tresprocs
cc tresprocs.c -o tresprocs
[ $ ~ ] ./tresprocs
Padre, con PID 14748 crea hijo 0
Hijo 0 con PID 14749
Padre, con PID 14748 crea hijo 1
Hijo 1 con PID 14750
[ $ ~ ] wc -l tresprocs.c
28 tresprocs.c


Venga hombre.... que como ves son menos de 30 líneas de nada.

Saludos.Ferdy
No es por no ayudar, el ejercicio de C es muy facilote, y podria pegarte el codigo en un momento (Cosa que no haré).

Pero antes de hacer las cosas deberias de pensar que las practicas sirven para un proposito, no el de subir nota ni para acceder a un examen, sino aprender la materia, conseguir esos conocimientos. O sea, para que quieres entregar unos ejercicios que NO has entendido si luego en el examen te van a suspender ya que nadie te podrá ayudar.

Asi que mi consejo es: El tiempo que inviertes en postear en el foro, usalo para leer.

yo NO sabia hacer el ejercicio, pero si te dicen de usar FORK, GETPID y EXIT y no conoces como funcionan pues es muy facil:

man fork
man getpid
man exit

si no usas linux, pues pones eso en google que salen muchos resultados.

Una vez sepas usar esas 3 funciones pues lo verás todo mucho mas claro como yo lo vi.

Asi que escribe tu codigo, si algo falla vuelve a mirar, usa debug, si aun asi sigues con problemas, PEGA AQUI TU CODIGO y nosotros podremos decirte donde estás fallando, asi se aprende, pero no se aprende sin intentarlo.

Lo dicho, Un saludo.
[MODO nohepodidoevitarlo ON]
No es por no ayudar, el ejercicio de C es muy facilote, y podria pegarte el codigo en un momento (Cosa que no haré).

Vengaaaaaaa, y qué más. Anda, anda, no te tires el pisto... [poraki].
Tú sigue dándole a tu C y PHP y no seas tan fantasmón... :P.
[MODO nohepodidoevitarlo OFF]

Por otra parte, el compi ya ha pedido perdón y demás, así que dejemos de dar la brasa con el temita :).

En fin, que tenía poco que hacer esta noche... :-|.

¡Un saludo!
Cobo escribió:Por otra parte, el compi ya ha pedido perdón y demás, así que dejemos de dar la brasa con el temita :).


Gracias, parece que a parte de inquisidores hay otro tipo de personas.

El ejercicio ya lo tengo resuelto, lo he entendido perfectamente y ha sido en otro foro donde me han ayudado, no a realizarlo, si no a entender los conceptos que me impedian progresar.

Solo espero seguir en este foro como he hecho siempre, y cuando alguien pida ayuda acordarme de este hilo y hacer justo lo contrario, o sea, no usar el sarcasmo, no dar lecciones sobre como deben ser llevados los estudios de otras personas y, en cambio, si dar apoyo, y procurar que mis aportaciones ayuden al autor así como a otros usuarios que en el futuro usen la busqueda y puedan encontrar informacion valiosa .
-

Para todos los que realmente si me han ayudado en forma de links, que a la postre si han resultado utiles o en forma de MP (hubiera preferido el hilo, por los motivos que he dicho antes) ....GRACIAS !!!

Para el resto que me aconsejan invertir mi tiempo estudiando en lugar de pedir ayuda en un foro.............tambien gracias por preocuparos por mi tiempo, desperdiciando así el vuestro.


Saludos.



-




-
Gracias, parece que a parte de inquisidores hay otro tipo de personas.

Como tu problema está resuelto, y parece que sigues con ganas de flame, te contesto. Sigues despreciando cualquier cosa que se te diga que no sea una ayuda directa (y a veces aún así), ofendiéndote como si te estuviesen escupiendo a la cara.

Como sigues dándole vueltas a mi broma, (que no era otra cosa que eso, no sé a que viene tanto paripé), te diré que es lo que tu post se merecía, te guste a tí o no. Te lo repito, si quieres buenas respuestas, haz buenas preguntas. Y si no te gusta la forma en la que responde la gente de este foro, y sí la del otro, ya sabes donde ir.

Y nadie tiene nada contra tí, que te pones en un plan como si te estuviesemos tratando a patadas. Si te paras a leer lo que se te dice, sin ninguna maldad, quizá aprendas más de esos consejos que de la propia práctica.

Por cierto, Ferdy, si nos ponemos putillas aún se puede apurar más:
$ ./vorl_forks
Mensaje 1 proceso Padre con pid 5473,
Mensaje 1 Proceso Hijo 1 con pid=5474,
Mensaje 2 Proceso Hijo 1 con pid=5474,
Mensaje 2 proceso Padre con pid 5473,
Mensaje 1 Proceso Hijo 2 con pid=5475,
Mensaje 2 Proceso Hijo 2 con pid=5475,
Mensaje 3 proceso Padre con pid 5473,

$ wc -l vorl_forks
15 vorl_forks


¿Hacemos un concurso a ver quien la tiene más pequeña? :P

Un saludo
Jaja...

¿ Y tu código sigue el estilo K&R además de compilar limpiamente con -Wall y -pedantic ?

Obviamente es muy fácil bajar el número de líneas hasta 1 :) Pero la corrección 'pedante' como técnica no siempre puedes mantenerla.

Posteen sus soluciones.

(Yo haré lo propio cuando llegue a casa)

Saludos.Ferdy
Vorlander escribió:El ejercicio ya lo tengo resuelto, lo he entendido perfectamente y ha sido en otro foro donde me han ayudado, no a realizarlo, si no a entender los conceptos que me impedian progresar.


por curiosidad , ¿que conceptos son los que no entendias y ahora si entiendes?

¿El sleep ? ¿el fork? ¿el cocnepto de hijo y padre en linux ?

Otra cosa te fallaba ¿el concepto , el uso , los parámetros?

Saludos

Por cierto ... no he visto en ningún momento que nadie te haya negado la ayuda ( creeme , al final agradeceras estas cosas... siempre y cuando te quieras dedicar tiempo a shell scripting )
Si quiere ferdy que se posteen soluciones, lo haré:

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

int main(int argc, char **argv)
{
»···int PID;
»···int PIDpadre;
»···int PIDhijo;
»···int i;
»···
»···PIDpadre = getpid();
»···for (i = 0 ; i < 2; i++)
»···{
»···»···printf("Padre, con PID %d crea hijo %d\n", PIDpadre, i);
»···»···PID=fork();
»···»···if(PID==0) {
»···»···»···PIDhijo = getpid();
»···»···»···printf("Hijo %d con PID %d\n",i, PIDhijo);
»···»···»···exit(0);
»···»···}
»···»···else
»···»···»···waitpid(PIDhijo, NULL, 0);
»···}
»···return 0;
}


COBO maricona, como que fantasma? aqui tienes la fantasmada guarra.

Un saludo.
Yo aposté por algo pedante :)

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

#define SIZE_ARRAY(a) (sizeof(a)/sizeof(a[0]))

int main(int argc, char *argv[])
{
   pid_t hijos[2];
   int i;

   for(i = 0; i < SIZE_ARRAY(hijos); i++) {
      printf("Padre, con PID %d crea hijo %-3d\n",getpid(),i);

      if((hijos[i] = fork()) == 0) {
         printf("Hijo %-3d con PID %-d\n",i,getpid());
         exit(EXIT_SUCCESS);
      } else
         waitpid(hijos[i],NULL,0);
   }

   exit(EXIT_SUCCESS);
}


Es muy difícil hacerlo mucho más corto y que siga siendo 'tan idiomático'.

Saludos.ferdy
Ferdy escribió:¿ Y tu código sigue el estilo K&R además de compilar limpiamente con -Wall y -pedantic ?


Lo de -Wall y -pedantic sí lo compila bien. Lo del estilo ya no sé, aprendí con ese libro, pero de C voy justito así que no sabría que decirte. Por lo que veo es muy parecido a lo que has puesto. (veo que le has dado algún repasillo para bajar alguna línea, perrete).

Ahí va el mío.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
        int  i, pid;
        for ( i=1 ; i <= 2 ; i++) {
            printf("Mensaje %d proceso Padre con pid %d\n",i,getpid());
            if ((pid=fork())==0)
                  exit(printf("Mensaje 1 Proceso Hijo %d con pid=%d\n",i,getpid()));
            waitpid(pid, NULL, 0);
        }
        return(0);
}


Como veis tiene un poco de trampa, porque lo del exit(printf()) no creo que sea muy ortodoxo XD (todo sea por ahorrar dos líneas, ya dije que era siendo un poco putilla).

Por cierto, le he quitado la línea final del padre, que tampoco la habéis puesto, tramposos, y ahora se me queda en 14, y sin hacer la guarrería del exit, 16. Entenderse creo que se entiende bien, sólo he intentado aprovechar un poco los recursos. :P

Un saludo.
Ehm... no no no no no

1) printf devuelve el número de caracteres impresos, así que tus hijos siempre mueren con estado 'fallido'.
2) fork() devuelve pid_t, no int.
3) El estilo no es K&R. Las funciones tienen las llaves en líneas aparte.
4) No incluir cabeceras no es utilizar recursos :)
5) Tampoco lo es no poner líneas en blanco jaja
6) return(0) no es suficientemente pedante :P

Lo dicho, pierdes. jaja

Saludos.Ferdy
Ferdy escribió:1) printf devuelve el número de caracteres impresos, así que tus hijos siempre mueren con estado 'fallido'.
2) fork() devuelve pid_t, no int.
3) El estilo no es K&R. Las funciones tienen las llaves en líneas aparte.
4) No incluir cabeceras no es utilizar recursos :)
5) Tampoco lo es no poner líneas en blanco jaja
6) return(0) no es suficientemente pedante :P

1) Ok, dije que era una guarrada, hagamos como que nunca existió. :P
2) Cierto, se me había olvidado, lo quise hacer sin mirar lo que tenía hecho, y como funcionaba, no he caído.
3) Me gustan más así, al final de la línea, manías mías.
4) y 6) Mmm, lo he compilado usando -Wall y -pedantic, como dijiste y no da ningún warning ni nada. Desconozco tu concepto de pedante (bueno me hago una idea XD).
5) Tampoco las hecho en falta, pero bueno

Lo dicho, pierdes. jaja

De acuerdo, sé reconocer una derrota, y lo hago ante todo el foro.
Señores, FERDY ES EL QUE MÁS PEQUEÑA LA TIENE. ;)

EDITO: Lo del 3) he mirado como lo has hecho y veo que te referías al main, no a todo (me sonaba que el K&R lo hacía así, pero a mí me gusta más al final de la línea). Lo de las cabeceras, la de sys/types no la tenía porque no usaba pid_t. La de sys/wait, si no me equivoco (en cuyo caso me apunto un gol XD) no te hace falta, porque no usas ninguna constante en el waitpid).

Un saludo.
Jajaja

3) Pero era premisa que fuera K&R, por eso lo he dicho.

4) Porque has tenido 'suerte', pero pid_t está definido en sys/types.h y waitpid en sys/wait.h.

5) Me refería a que entonces para comprobar la longitud real habría que cargarse los espacios:

[ $ ~ ] { sed -e '/^[[:blank:]]*$/d' | wc -l ; } < tresprocs.c
20


Si a eso le añades las cabeceras que te faltan, y que yo lo he 'sobre-exagerado', creo que la tenemos igual de pequeña :P

6) Lo correcto (pedante) es EXIT_SUCCESS, return 0, o exit(0) deberían ir bien en el 99.9% de los casos. (BTW, return es una construcción del lenguaje no necesita los ( )).

Saludos.Ferdy
Ferdy escribió:Si a eso le añades las cabeceras que te faltan, y que yo lo he 'sobre-exagerado', creo que la tenemos igual de pequeña :P


Lo siento con esto te vas de cabeza a la Frase de la Semana en EOL :-D juas menudas interpretaciones sacaran de lo de sobre-exagerado y el tamaño
No lo sientas, pero no la vayamos a tener :)
escufi escribió:
Lo siento con esto te vas de cabeza a la Frase de la Semana en EOL :-D juas menudas interpretaciones sacaran de lo de sobre-exagerado y el tamaño


¿Por qué? Ya sabemos que todo el mundo exagera con estas cosas... con sus dotes, quiero decir... :P

Un saludo.
Ferdy escribió:Yo aposté por algo pedante :)


Lamento deciros que ninguno de vuestros "ejercicios" superaria la practica.
Era condicion indispensable usar llamadas al sistema como :"fork,getpid,exit" y las de entrada y salida "read" y "write"

Ninguno cumple la ultima condicion.


-
P.D.: No valoro la "calidad" del codigo, de hecho ni me atreveria a hacerlo, solo os lo digo porque como parece que os "picasteis" entre vosotros para ver cual era el codigo mas "pequeño", quizás os interese ese dato indispensable.


Saludos-








-
¿ 'read' 'write' para que ? Sea como fuere era muy díficil adivinar el ejercicio.
Ferdy escribió:¿ 'read' 'write' para que ?


Pues si no lo sabes que tu, que está claro que dominas bastante mas que yo ...............
Era uno de los requisitos del ejercicio.

Ferdy escribió: Sea como fuere era muy díficil adivinar el ejercicio.


En el primer mensaje lo explica, y ahí dcie que hayq eu usar read y write y el resto de comandos.

Saludos




-
'read' no veo dónde usarlo... y si te hacen usar write para salir a stdout.... pues.... que gilipollez. ¿ O es que el hijo tiene que enviarle el pid al padre y este escrbirlo ?
Los programas que habeis posteado no cumplen el requisito de la práctica, porque no muestran el número de mensaje en el orden que se especifica. Supongo que tienen que comunicarse padre e hijo para transmitirse el número de mensaje, seguramente sea mediante pipes, lo digo por lo de read y write.

Un saludo.
Los pipes se 'intuye' del estúpido requerimiento de usar 'read' y 'write'. Por otro lado, se puede conseguir el orden de los mensajes sin usar pipes modificando cuatro chorradas de cualquiera de los que hemos posteado.

Saludos.Ferdy
De hecho si te fijas en la salida que posteé en el primero el mío lo hacía, lo quité después. Es una tontería tal y como está puesto porque el hijo no espera a nadie, saca los dos mensajes seguidos.

Por otra parte, crear un pipe y leer/escribir en él tampoco añade mucha más complejidad al problema. Lo nuestro no tenía que ver realmente con el problema en sí, sino que era un poco de frikismo. :D

Un saludo.
43 respuestas