Kann mir jemand erklären, was argc und argv in diesem Code macht und warum diese Variablen Parameter in der Hauptfunktion sind? Wir hatten in Vorträgen Beispiele, die diese beiden Variablen zeigten, also benutze ich sie, ohne zu wissen, was sie tun.Betriebssystemprozesse in .c
main (argc, argv)
char *argv[];
{
int fd;
extern int errno;
if(argc < 2){
fprintf(stderr, "No file\n");
exit(1);
}
if((fd = creat(argv[1], 0777)) < 0){
fprintf(stderr, "Cannot creat file %s\n", argv[1]);
exit(1);
}
switch (fork()) {
case -1:
fprintf(stderr, "Fork error\n");
exit(1);
case 0:
close(1);
dup(fd);
close(fd);
execl("/bin/pwd", "pwd", NULL);
perror("Exec");
break;
default:
close(fd);
}
exit(0);
}
Oh Gott, alte K & R-Stil-Deklarationen, implizite 'int' ... Wer dies als Vorlesungsmaterial im Jahr 2016 gibt, sollte dauerhaft vom Unterricht verbannt werden. – EOF
Sie sind optionale Befehlszeilenparameter, die mit dem Programm übergeben werden. argc gibt die Anzahl der Parameter an, argv enthält Zeiger auf die eigentlichen Strings. – Unimportant
Das, mein Freund, sieht aus wie ein verdammt alter C-Code, sagen wir Anfang der 80er Jahre. Ich hoffe aufrichtig, dass dies nicht von tatsächlichen Kursunterlagen stammt ... – fvu