"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

parameterübergabe in linux

x3 19.03.2004 - 10:50 866 5
Posts

x3

† 18.03.2006
Avatar
Registered: Jan 2003
Location: lnz/(hgb)
Posts: 1480
Also mein prob:
Ich soll parameter übergeben, wie zb -u oder -l oder -of=datei
oder gemischt
nur wie finde ich herraus was der user nun eingegeben hat?
den mit:
int main(int argc, char *argv[])
hab i ja dann nur zahlen :(

tia
x3

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Das hat mit Linux gar nix zu tun.

Geh einfach das argv Array durch, da hast du jeden Parameter aufgelistet.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
kA (vl ists in linux wirklich anders) aber wie wärs wenn du das char * array nimmst :)

argv[0] -> 1. argument (ich glaub dass is aber das arbeitsverzeichnis oder so)
argv[1] -> 2. argument
..

edit: wenn du argv darstellst, wie auch immer, dann bekommst du natürlich eine zahl (speicheradresse) weils ein doppelpointer is -> char **

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
Zitat von x3
nur wie finde ich herraus was der user nun eingegeben hat?
den mit:
int main(int argc, char *argv[])
hab i ja dann nur zahlen :(

edit: g0t pwned by mat-the-machine :D

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
Code:
atrox@nexus:~$ ./argv -some option "this is a blank test"
argv[0]: './argv'
argv[1]: '-some'
argv[2]: 'option'
argv[3]: 'this is a blank test'
atrox@nexus:~$ cat argv.c
#include <stdio.h>

int main (int argc, char **argv) {
        int i;
        for (i=0; i<argc; i++) printf("argv[%d]: '%s'\n",i,argv[i]);
}

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
und gleich ein beispiel für die shell-expansion (was wohl der größte unterschied bei der behandlung von argumenten zwischen dos/win und unix ist):

Code:
atrox@nexus:~$ ./argv /proc/*
argv[0]: './argv'
argv[1]: '/proc/1'
argv[2]: '/proc/1100'
argv[3]: '/proc/1106'
argv[4]: '/proc/1107'
argv[5]: '/proc/1108'
argv[6]: '/proc/1109'
argv[7]: '/proc/1110'
argv[8]: '/proc/1125'
argv[9]: '/proc/1437'
argv[10]: '/proc/1501'
argv[11]: '/proc/16534'
argv[12]: '/proc/16809'
(...)
argv[92]: '/proc/mounts'
argv[93]: '/proc/mtrr'
argv[94]: '/proc/net'
argv[95]: '/proc/partitions'
argv[96]: '/proc/pci'
argv[97]: '/proc/self'
argv[98]: '/proc/slabinfo'
argv[99]: '/proc/stat'
argv[100]: '/proc/swaps'
argv[101]: '/proc/sys'
argv[102]: '/proc/sysrq-trigger'
argv[103]: '/proc/sysvipc'
argv[104]: '/proc/tty'
argv[105]: '/proc/uptime'
argv[106]: '/proc/version'
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz