Sie sind nicht angemeldet.

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

1

09.03.2005, 11:29

schwieriges beispiel

hi leute!

kann mir jemand bei folgenden schwierigen beispiel helfen? ich bin schon am verzweifeln.

Aufgabenstellung
Implementieren Sie ein System, das es ermöglicht, Prozesse zu einem bestimmten Zeitpunkt zu starten. Die Auflösung der Zeit beträgt eine Minute.

--------------------------------------------------------------------------------

Anleitung
Das System besteht aus zwei Prozessen. Der erste Prozess ("Server") wird bei der Installation im Hintergrund gestartet und legt die benötigte Message Queue an (msgget(2)). Danach durchsucht er die Message Queue (msgrcv(2))periodisch (alle 20 Sekunden) und stellt fest, ob Prozesse vorliegen, die augenblicklich gestartet werden müssen. Etwaige Ausgaben der gestarteten Programme auf stdout und stderr sollen auf den entsprechenden Kanälen des Serverprozesses erscheinen.a

SYNOPSIS
server

Die Aufgabe des zweiten Prozesses ("Client") besteht darin, Uhrzeiten und Programmnamen einzulesen und diese Information dem Server in der Message Queue zur Verfügung zu stellen, d.h. er schreibt die übergebene Uhrzeit und den Programmnamen in die Message Queue (msgsnd(2)) und terminiert.

SYNOPSIS
myat hh:mm

Da Nachrichten beim Lesen konsumiert werden, ist es nicht möglich, dass der Server periodisch die gesamte Message-Queue durchsucht und die entsprechenden Prozesse startet. Verwenden Sie daher den Messagetyp, um die Uhrzeit darzustellen, und lassen Sie den Server "gezielt" suchen.

Der Server soll nach Erhalt einer speziellen Nachricht (z.B. quit) terminieren. Weiters sollen im Server die Signale SIGINT und SIGTERM behandelt werden (sigaction(2)). In beiden Fällen sind sämtliche benötigten Resourcen (insbesondere die Message-Queue) wieder freizugeben (msgctl(2)).

Beachten Sie dabei die Richtlinien für die C Richtlinien.

ist ne harte nuss, oda?

bitte um hilfe

thx, deathlock.
GOD save the OPEN-SOURCE!!!

Pharao

2 sexy 4 my Linux

  • »Pharao« ist männlich

Beiträge: 4 214

Wohnort: Hirschhorn / Neckar

Beruf: Schüler

  • Nachricht senden

2

09.03.2005, 16:02

das gehört ins Hausaufgabenforum... sowas gehört selbst gelöst...
close the world - open the next


"funzt" und jegliche Abwandlung davon ist kein Wort, egal wie oft du es dir einredest, verdammt nochmal!

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

3

09.03.2005, 16:09

glaubst du ich hätte das gepostet, wenn ich nicht schon alles versucht hätte???
ich bin grad am verzweifeln.
GOD save the OPEN-SOURCE!!!

Pharao

2 sexy 4 my Linux

  • »Pharao« ist männlich

Beiträge: 4 214

Wohnort: Hirschhorn / Neckar

Beruf: Schüler

  • Nachricht senden

4

09.03.2005, 18:14

das ändert nichts dran, dass hier keine Hausaufgabenhilfe für lernschwache oder faule
Schüler ist.
Es hat einen Grund warum ihr die Aufgabe bekommen habt.
Hilfe kannst du erwarten, wenn du deinen Lösungsansatz präsentierst und sagst, wo du
ein Problem hast.
Aber dir das ganze Ding programmieren,... Stundenlohn 35Euro, wie immer...
close the world - open the next


"funzt" und jegliche Abwandlung davon ist kein Wort, egal wie oft du es dir einredest, verdammt nochmal!

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

5

09.03.2005, 18:18

das ist aber nicht besonders nett von dir mich als lernschwach/faul zu bezeichnen. außerdem wollte ich sicher keine komplette lösung, sondern einen ansatz, damit ich zumindest weiss wie ich anfangen soll.

aber, egal vergiss es, ich kriegs schon irgendwie hin.

übrigens, schön für dich dass du 35 euro die stunde verdienst, ich würds an deiner stelle aber nicht unbedingt an die große glocke hängen. naja, wie auch immer...
GOD save the OPEN-SOURCE!!!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »deathlock« (09.03.2005, 18:22)


Burger Ping

Fortgeschrittener

Beiträge: 260

Wohnort: Rhein-Main-Gebiet

  • Nachricht senden

6

09.03.2005, 18:26

Euer Lehrer hat bestimmte Funktionen erwähnt, ergo solltest Du mal ein Grundgerüst erstellen, welches die genannten Funktionen enthält. Dieses könntest Du hier posten und dann fragen, wie muß ich an Position X weitermachen, damit ....

Ist das eine Idee?

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

7

09.03.2005, 18:28

dass ist ne gute idee. danke. werd mich dann mal an die arbeit machen.
GOD save the OPEN-SOURCE!!!

Pharao

2 sexy 4 my Linux

  • »Pharao« ist männlich

Beiträge: 4 214

Wohnort: Hirschhorn / Neckar

Beruf: Schüler

  • Nachricht senden

8

09.03.2005, 20:29

>das ist aber nicht besonders nett von dir mich als lernschwach/faul zu bezeichnen.
du hast dich nicht anderst präsentiert.

>außerdem wollte ich sicher keine komplette lösung, sondern einen ansatz,
was bei solchen Aufgaben im Prinzip auf komplette Lösung raus läuft.
Aber wenn dir: "Versuch es mit Funktionen" schon weiter hilft, wäre es sinnvoll dich mal
mit den Grundlagen etwas mehr zu befassen.

>aber, egal vergiss es, ich kriegs schon irgendwie hin.
Zweifel über Zweifel

>übrigens, schön für dich dass du 35 euro die stunde verdienst,
tue ich nicht.
Damit wäre ich etwas arm dran für die momentanen Verhältnisse.

> ich würds an deiner stelle aber nicht unbedingt an die große glocke hängen
das ist die "Forenpauschale" (wunder dich nicht, dass du es nicht verstehst)
close the world - open the next


"funzt" und jegliche Abwandlung davon ist kein Wort, egal wie oft du es dir einredest, verdammt nochmal!

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

9

09.03.2005, 22:54

ok, pharao, du hast mich überzeugt. du hast recht, es war blöd von mir einfach die ganze angabe zu posten. ich werd mir das ganze nochmal ordentlich durch den kopf gehen lassen, versuchen einen lösungsansatz zu finden und den dann posten. ich würde euch dann nur bitte mir zu sagen, ob mein ansatz in die richtige richtung geht oder ob ich komplett falsch liege (wär nämlich sehr blöd wenn ich zu weit in die falsche richtung gehe, vor allem wegen dem zeitverlust den ich mir gar nicht leisten kann).

jedenfalls danke, du hast mich auf den richtigen (moralisch richtigen) weg gebracht.

lg, deathlock
GOD save the OPEN-SOURCE!!!

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

10

10.03.2005, 15:30

so, ich glaub jetzt hätt ich zumindest mal das myat so weit, bitte sagt mir ob es halbwegs passt, tipps sind auch mehr als willkommen (besonders für die zeitcodierung, da es ja "server", als empfänger, auch irgendwie umkodieren muss). jedenfalls danke schon mal im voraus:

#include <time.h>
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdlib.h>
#include <sys/types.h>

#define SIZE 20

typedef struct
{
long mtype; //Message type
char mtext[SIZE]; //Message text
}message;


int main(int argc, char *argv[])
{
getopt(argc, argv, "");

message ms;
ms.mtext = argv[2];
int qid = 0;
char *ptype = &argv[1];
char *pendtype;

if((ms.type = strtol(ptype, pendtype, 10)) == -1)
fputs("Error occured by converting time!");

if((key_t key = ftok("key.txt", 'b')) == -1)
fputs("Error occured by creating key!");

if((qid = msgget(key, 0660)) == -1)
{
fputs("Error occured by connecting to Message Queue!",stderr);
return -1;
}

else
{
if((msgsnd(qid, &ms, SIZE, 0)) == -1)
{
fputs("Error occured by sending Mesage!", stderr);
return -1;
}
else
return 0;
}
}
GOD save the OPEN-SOURCE!!!

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

11

11.03.2005, 15:39

übrigens hab ich auch schon ein gerüst für server, allerdings haperts hier noch an der zeitkodierungsumsetzung, am timer und an der signalbehandlung (fehlerbehandlung ist auch noch keine implementiert):

#include <stdio.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
#include <time.h>

#define SIZE 20

typedef struct
{
long mtype;
char mtext[SIZE];
}message;

int main(int argc, char *argv[])
{
getopt(argc, argv, "");

int qid = 0;
message ms;
char a_time[6];
char *ptype = NULL;
char *pendtype = NULL;
ms.text = "";
ptype = &a_time;

if((key_t key = ftok("key.txt", 'b')) == -1)
fputs("Error occured by creating key!");


if((qid = msgget(key, IPC_CREAT | 0660)) == -1)
fputs("Error occured by creating Message Queue!", stderr);

else
{
while(strcmp(ms.text, "quit") == 1)
{
msgrcv(qid, &ms, SIZE, 0, 1);

*ptype = strftime(time());


if(ms.type == strtol(ptype, pendtype, 10))
execl("/bin/sh","sh","-c",ms.mtext,NULL);
}

}

msgctl(qid, IPC_RMID, NULL);
}
GOD save the OPEN-SOURCE!!!

deathlock

101110101001111110

  • »deathlock« ist männlich
  • »deathlock« ist der Autor dieses Themas

Beiträge: 211

Wohnort: Autriche

Beruf: Testentwickler

  • Nachricht senden

12

15.03.2005, 09:10

hey leute, es wär echt nett von euch wenn ihr zumindest irgendwas schreiben würdet.
GOD save the OPEN-SOURCE!!!

Thema bewerten