Ayuda con programación de procesos

Iniciado por ezkar, 3 Abril 2014, 04:49 AM

0 Miembros y 1 Visitante están viendo este tema.

ezkar

Actualmente me imparten la materia de Sistemas operativos I, hasta el momento no nos han explicado muy bien como programar procesos en c, pero nos han dejado una practica para desarrollar:
Proceso coche ("coche.c")
El proceso coche deberá (a) esperar a que primero haya sitio en la pista y, a conti-
nuación, en la zona de embarque. (b) Una vez embarcados 4 pasajeros, inicia la travesía.
Cuando finaliza, (c) espera a que hay sitio en la zona de desembarco y, (d) una vez
desembarcados todos los pasajeros, el coche se retira de la pista.
Se repetirá la secuencia anterior hasta que se selecciona una opción para finalizar el
proceso coche. A continuación, se muestra un ejemplo de ejecución del proceso coche
indicando los mensajes que se deben mostrar en pantalla:
Esperando sitio en la pista ...
Esperando para poder embarcar pasaje ...
Puertas abiertas. Embarcando pasaje ...
Empieza la travesía. Pulse ENTER para finalizar
....
<se pulsa ENTER>
Esperando para poder desembarcar pasaje ...
Puertas abiertas. Desembarcando pasaje ,,,
El coche se retira de la pista (1 para otro viaje | 2 para finalizar)
....
<se pulsa 1>
Esperando sitio en la pista ...

Hay alguien que me ayudara a comprender que usar o como quedaría, ejemplos o algo similar, gracias y un saludo a todos !

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ezkar

lo básico de c, es mi primer año en universidad

engel lex

desarrolla tu una idea de que tienes que hacer y yo te ayudo a traducir eso a código

te doy las herramientas iniciales

tu codigo debe empezar por la librerias basicas

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>


ellas te darán las funciones basicas y de escritura/lectura de datos

luego el main, el cuerpo principal del programa

Código (cpp) [Seleccionar]
int main() {
    //aqui tu codigo
    //estas "//" son para indicarle alcompilador que esto no es codigo, no sera leido
    //borra estas lineas y coloca tu programa por aqui, despues del int y antes del return
    return (0);
}


ahora te enseño a asignar una variable "int" representa una variable tipo numero entero

Código (cpp) [Seleccionar]
int numero;

ahora "numero" es una variable lista para aceptar y dar valores...

tienes una funcion para leer datos
Código (cpp) [Seleccionar]
scanf("%d", &numero);
ella indica que va a leer un dato tipo "digito" y que lo va a meter a numero (no importa ahorita el "&" simplemente ponlo y listo :P)

para mostrar algo en pantalla puedes usar
Código (cpp) [Seleccionar]
printf("hola mundo");ç
si quieres usar un salto de linea puedes meter \n entre las comillas


prueba con eso a ver que logras :P (aun me falta darte una herramienta, pero quiero ver que haces con esas)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ezkar

Bueno se un poco usar tambien objetos y clases, la cuestión es que nunca he usado la libreria "unistd.h " ni el fork, mucho menos el pid, getpid, getppid


#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a,b,c;
    printf("hola, este es una suma basica\n");
    printf("teclea el primer digito\n");
    scanf("%d",&a);
    printf("teclea el segundo digito\n");
    scanf("%d",&b);
    c=a+b;
    printf("el resultado es: %d",c);
    system ("pause");
   
   
    return 0;
}

engel lex

CitarBueno se un poco usar tambien objetos y clases, la cuestión es que nunca he usado la libreria "unistd.h " ni el fork, mucho menos el pid, getpid, getppid

a que vino eso?

XD sabes usar el while para que armes el menú finalmente con la opcion 1 y 2?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ezkar

jajaja es que mira, el problema que me dejaron, se supone que se aplica con procesos, y me dieron de ejemplo este codigo:

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char ∗argv[]) {
int num;
pid t pid;
for (num= 0; num< 3; num++) { pid= fork();
printf ("Soy el proceso de PID %d y mi padre tiene%d de PID.\n",
getpid(), getppid());
if (pid!= 0)
break;
srandom(getpid());
sleep (random() %3);
}if (pid!= 0)
printf ("Fin del proceso de PID %d.\n", wait (NULL));
return 0;
}

pero la verdad no lo comprendo del todo, y menos para aplicarlo a un problema, como ves el código?

engel lex

un poco de diferencia! XD si expresabas que el proceso era así! XD empezábamos por ahí en lugar de perder tiempo! XD

sorry, estoy en windows, fork no hay! XD no puedo apoyarte en esa parte!


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ezkar

jajaja si verdad  pero de todos modos gracias brother!

rir3760

Cita de: ezkar en  3 Abril 2014, 06:00 AMel problema que me dejaron, se supone que se aplica con procesos
Una guía sobre programación en Linux en ingles pero accesible es Advanced Linux Programming.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language