Avatar billede danielhep Nybegynder
19. november 2003 - 11:14 Der er 12 kommentarer og
1 løsning

System() i Linux

Hey


Jeg sidder og programmere et program i Linux som har brug for at udføre nogle kommandoer.
Jeg har brugt system(), men jeg synes ikke om den.
Man kan f.eks ike bruge system("ll");, det synes jeg er lidt belastende.

Hvad er der af andre alternativer, og hvorfor er det lige at system() ikke kan udføre diverse kommandoer ?

Jeg hørte engang noget med at system() kunne være farlig at bruge i nlgle situationer, men hvilke er det ?
Avatar billede arne_v Ekspert
19. november 2003 - 11:21 #1
Du bør sagtens kunne bruge system.

Hvad gør ll ?

Mit gæt er at det ikke er en ægte kommando men et alias (f.eks. for ls -l)
og at det alias ikke bliver sat i den process system starter.

Det klassiske argument mod system er performance - den er tung.

System er vel kun farlig hvis du tillader ikke pålidelig kilde
at påvirke hvilken kommando der udføres. Det vel næppe være smart at
tillade et CGI script at udføre en system med input fra web bruger.
Avatar billede danielhep Nybegynder
19. november 2003 - 11:22 #2
hmm...er der ikke andre muligheder end lige system(), eller det ved jeg der er, men jeg kender dem ikke....
Avatar billede arne_v Ekspert
19. november 2003 - 11:23 #3
Jo.

popen må da også være en mulighed.
Avatar billede danielhep Nybegynder
19. november 2003 - 11:24 #4
"ll" er en kommando i Linux sim minder meget om Dos "dir"
Avatar billede danielhep Nybegynder
19. november 2003 - 11:26 #5
Hvordan bruger men popen...er det bare

popen("vi hejhej");

eller har den flere parametre.. ?
Avatar billede arne_v Ekspert
19. november 2003 - 11:26 #6
Prøv lige og skriv:

alias ll
Avatar billede arne_v Ekspert
19. november 2003 - 11:26 #7
ll er et alias
Avatar billede danielhep Nybegynder
19. november 2003 - 11:27 #8
jeg sidder ikke lige ved min linux box lige nu...men ja ll er er alias...
Avatar billede arne_v Ekspert
19. november 2003 - 11:29 #9
Jeg har lige testet.

system("ll");

virker ikke.

Mne det gør:

system("ls -l");

d.v.s. hvis du bruger "originale" kommandoer i.s.f. alias'er så vil det virke.
Avatar billede arne_v Ekspert
19. november 2003 - 11:30 #10
Der er et eksempel på brug af popen på den her side nederst:
  http://bama.ua.edu/cgi-bin/man-cgi?popen+3C
Avatar billede danielhep Nybegynder
19. november 2003 - 11:35 #11
ok, jeg tror at jeg skifter til popen..takker
Avatar billede danielhep Nybegynder
19. november 2003 - 11:36 #12
giver du et svar Arne ?
Avatar billede arne_v Ekspert
19. november 2003 - 11:39 #13
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester