/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Resistent program?
Fra : Klaus Petersen


Dato : 10-03-04 19:29

Hej ng.

Hvordan griber man normalt det an, hvis det program man laver til linux skal
være resistent?

Skaber man threads? Eller skal man lave en process?

Jeg er også meget interesseret i pointers til hvordan implementerer det.

Klaus.



 
 
Jesper Louis Anderse~ (10-03-2004)
Kommentar
Fra : Jesper Louis Anderse~


Dato : 10-03-04 19:39

In article <Y7J3c.6995$kb1.6289@news.get2net.dk>, Klaus Petersen wrote:

> Hvordan griber man normalt det an, hvis det program man laver til linux skal
> være resistent?

Huh? Mener du som en TSR-rutine fra DOS dagene?

--
j.

Klaus Petersen (10-03-2004)
Kommentar
Fra : Klaus Petersen


Dato : 10-03-04 20:08

> Huh? Mener du som en TSR-rutine fra DOS dagene?

Heh ... ja det kan da godt være at udtrykket er forældet

Jeg skal såmænd bare lave et program, som kører i baggrunden - dvs. at man
kan bruge computeren som normalt.

Ligesom diverse daemons o.s.v.



Anders Borum (11-03-2004)
Kommentar
Fra : Anders Borum


Dato : 11-03-04 08:57

Jesper Louis Andersen wrote:

> In article <Y7J3c.6995$kb1.6289@news.get2net.dk>, Klaus Petersen wrote:
>
>
>>Hvordan griber man normalt det an, hvis det program man laver til linux skal
>>være resistent?
>
>
> Huh? Mener du som en TSR-rutine fra DOS dagene?
>

Bare for at udrydde forvirringen. Vi taler om residente og ikke om
restistente programmer, ikke?

Anders

Klaus Petersen (11-03-2004)
Kommentar
Fra : Klaus Petersen


Dato : 11-03-04 20:19

> Bare for at udrydde forvirringen. Vi taler om residente og ikke om
> restistente programmer, ikke?

Jo. Hvad er forskellen egentlig?



Ivan Johansen (11-03-2004)
Kommentar
Fra : Ivan Johansen


Dato : 11-03-04 21:49

Klaus Petersen wrote:
> Jo. Hvad er forskellen egentlig?

Resident betyder noget i retning af bosiddende. Et TSR (Terminate and
Stay Resident) program er altså et program som afsluttes men forbliver
(bosiddende) i hukommelsen.

Resistent betyder modstandsdygtig. Man kan f.eks. sige at et program er
resistent over for hacker-angreb.

Ivan Johansen

Jesper Louis Anderse~ (11-03-2004)
Kommentar
Fra : Jesper Louis Anderse~


Dato : 11-03-04 21:27

In article <c2p63r$22bt$1@munin.diku.dk>, Anders Borum wrote:

>> Huh? Mener du som en TSR-rutine fra DOS dagene?
>
> Bare for at udrydde forvirringen. Vi taler om residente og ikke om
> restistente programmer, ikke?

Exactly. TSR == Terminate and stay Resident.


Jeg ville nok benytte betegnelsen resistent program til noget andet
(ikke at jeg har en god veldefineret ide til hvad det skal vaere ;)


--
j.

Per Abrahamsen (11-03-2004)
Kommentar
Fra : Per Abrahamsen


Dato : 11-03-04 10:13

"Klaus Petersen" <spectual2@getTOnet.dk> writes:

> Jeg skal såmænd bare lave et program, som kører i baggrunden - dvs. at man
> kan bruge computeren som normalt.

Øh, alle Unix programmer kan køre "i baggrunden", med mindre man gør
sig meget umage med at forhindre det.

Start programmet fra kommandolinjen med et &-tegn efter.

prompt% ditprogram &
prompt%

Og så kører det lige så stille og roligt i baggrunden.

Hvis det bruger stdin / stdout skal du omdirigere dem, som under DOS.

prompt% ditprogram < filmedinput > filmedoutput &

Du kan få programmet til "automatisk" at køre i baggrunden med
ved at kalde fork(2), men det virker unaturligt på Unix brugere.

> Ligesom diverse daemons o.s.v.

Nogen dæmoner startes som beskrevet ovenfor at forskellige shellscript
under /etc/rc*, du kan kigge i dem derunder. Andre, særlig
netværksdæmoner, startes "on demand" af inetd(8) og har en særlig
protokol.

db (10-03-2004)
Kommentar
Fra : db


Dato : 10-03-04 20:05

On Wed, 10 Mar 2004 19:29:16 +0100
"Klaus Petersen" <spectual2@getTOnet.dk> wrote:

> Hvordan griber man normalt det an, hvis det program man laver til
> linux skal v_re resistent?
>
> Skaber man threads? Eller skal man lave en process?
>
> Jeg er ogs_ meget interesseret i pointers til hvordan implementerer
> det.

Har linux ikke en daemon funktion som FreeBSD?
Det går bare ud på at fork'e en process som kører i baggrunden (ved at
oprette en ny session id og redirect std-in/out/err
til noget andet...som fx /dev/null

mvh
db

Byrial Jensen (10-03-2004)
Kommentar
Fra : Byrial Jensen


Dato : 10-03-04 20:28

Klaus Petersen wrote:
> Hej ng.
>
> Hvordan griber man normalt det an, hvis det program man laver til linux skal
> være resistent?

Hvis jeg har forstået spørgsmålet rigtigt, vil man typisk frigøre
programprocessen fra dens kontrollerende terminal, forke, og returnere
fra den oprindelige proces.

> Skaber man threads? Eller skal man lave en process?

Nej. Ja.

> Jeg er også meget interesseret i pointers til hvordan implementerer det.

man 4 tty
man 2 fork
med meget mere. Er der ikke en Unix-programmerings-FAQ et sted. Den vil
sikkert uddybe.


Klaus Petersen (15-03-2004)
Kommentar
Fra : Klaus Petersen


Dato : 15-03-04 00:38

> Hvis jeg har forstået spørgsmålet rigtigt, vil man typisk frigøre
> programprocessen fra dens kontrollerende terminal, forke, og returnere
> fra den oprindelige proces.

Hvorledes "frigører man programprocessen fra dens kontrollerende terminal"?
Hvorfor er det nødvendigt?

De sidste 2 ting har jeg styr på.



Byrial Jensen (15-03-2004)
Kommentar
Fra : Byrial Jensen


Dato : 15-03-04 20:42

Klaus Petersen wrote:
> Hvorledes "frigører man programprocessen fra dens kontrollerende terminal"?

Man åbner /dev/tty og bruger ioctl(2) med kode TIOCNOTTY på den
resulterede fildeskriptor. Det beskrives i tty(4) som jeg allerede har
henvist til. En alternativ metode er brug af setsid(2).

> Hvorfor er det nødvendigt?

For at undgå at terminalen sender signaler til programmet, specielt
SIGHUP når man logger ud.


db (11-03-2004)
Kommentar
Fra : db


Dato : 11-03-04 22:09

On Thu, 11 Mar 2004 10:13:07 +0100
Per Abrahamsen <abraham@dina.kvl.dk> wrote:

> Du kan få programmet til "automatisk" at køre i baggrunden med
> ved at kalde fork(2), men det virker unaturligt på Unix brugere.

Hvis det er en daemon virker det da ikke unaturligt at den selv sørger
for at køre i baggrunden.

mvh
db

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408183
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste