» »

Procesi

Procesi

somebody199 ::

Zanima me kako bi lahko ta program še drugače zapisal in če mi lahko kdo o tem kaj razloži, kaj je fork?, kaj je wait?, čim bolj podrobno, hvala za vse informacije. OPOMBA: zanima me še kako bi pri fork ()preverjal vse možnosti in sicer oče/sin/napaka.

Napišite program, ki bo preko vhodnih argumentov prebral eno število (uporabite atoi funkcijo nad vhodnimi argumenti za pretvorbo vhodnih nizov v integer). Nadalje naj program ustvari n sinov (prvi vhodni argument), kjer vsak i-ti ustvarjeni sin izračuna in izpiše i-to fakulteto(primer: prvi ustvarjeni sin: 1!, drugi sin: 2! tretji sin 3!,...) (operacijo implementirajte sami - ni dovoljeno uporabiti funkcije obstoječih knjižnic).

Pazite, da se oče ne konča pred sinovi ('sirote' so nesprejemljive) in poskušajte program napisati čimbolj robustno. Prav tako pazite, da ne boste ustvarili neskončne zanke, ki bi generirala procese (fork bombo)!

Oddati morate arhiv s sledečimi zbirkami;

zbirko z imenom procesi.c in
Makefile, ki zgradi izvedljiv program procesi in pobriše vse generirane zbirke in direktorije.

Make file:

CC = gcc
CFLAGS = -ansi -Wall -pedantic -lm
TARGETS = procesi
# rules
# default
# targets
all: $(TARGETS)
clean:
	rm -fr $(TARGETS) *~ *.og


Program.c:

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

	int main(int argc, char** argv)
        {
	int stevec,x=1;
         if(argc >1)
         {
	   int y= atoi(argv[1]);
           for(stevec=1;stevec<=y;stevec++)
           {
	     int zacasna = fork();
	     x=stevec*x;
           if(zacasna == 0)
           {
	      printf("Sin %d ima fakulteto = %d \n\n",stevec,x);
	      exit(0);
           }else
	     wait(&zacasna);
           }
         }else
        {
	   printf("Manjka vhodni parameter !!!\n\n");
        }
           return EXIT_SUCCESS;
        } 


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] Procesi

Oddelek: Programiranje
6902 (811) Cvenemir
»

[C] Vsota števil v polju

Oddelek: Programiranje
51170 (1108) Cvenemir
»

C (Izračun povprečja)

Oddelek: Programiranje
141506 (1140) joze67
»

[C] in delo s procesi v Linuxu

Oddelek: Programiranje
132167 (1653) OmegaM
»

C - pomoč

Oddelek: Programiranje
111378 (1118) Thagirion

Več podobnih tem