Помогите!!!
Не могу сделать программу на С для линукса.
Нужно: Вывести на экран полной информации о пользователях спомощью команды ./bin/ls переданному как второй параметр командной строки с исползованием параметра -all передаваемого программе ./bin/ls (Необходимо использовать системный вызов execle и pid fork() ) Помогите если кто знает. |
Только за десяток борзых щенков :)
|
Программы выглядит таким образом, проблема в другом
#include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/types.h> #include"iostream" #include"fstream" using namespace std; int main(int argc,char *argv[],char *envp[]) { if(argc>1){ if(!(strcmp(argv[1],"help"))){ if(argc==2){ (void) execle("/home/help","/home/help",argv[1],0,envp); } else if(argc==3){ (void) execle("/home/help","/home/help",argv[1],argv[2],0,envp); } else (void) execle("/home/help","/home/help","help","-2",0,envp); } else{ if(argc==2){ FILE *f; f=fopen(argv[1],"r"); if(f==NULL){ (void) execle("/home/help","/home/help","help","-1",0,envp); } else{ fclose(f); int pid=fork(); if(pid==-1){ (void) execle("/home/help","/home/help","help","-4",0,envp); } else if(pid==0(void)execle("/bin/ls","/bin/ls",argv[1],argv[2],0,envp); } } else (void) execle("/home/help","/home/help","help","-2",0,envp); } } else (void) execle("/home/help","/home/help","help","-2",0,envp); return 0; } После запуска программы на исполнение ОС загружает список команд в память, после чего процессор начинает последовательно выполнять этот список. В начале проверяем количество параметров, если параметров <1 то выдаем ошибку, иначе проверяем второй параметр. Если второй параметр является help, то вызывается help и завершаем работу программы, иначе с помочью fopen проверяется наличие файла указанного как параметр, если файл не существует выдаем ошибку и завершаем работу программы, иначе закрываем файл, создаем новый процесс c помощью системного вызова fork Так вот мне нужно каким то образом объяснить, что происходит дальше, так я понимаю, а объяснить не могу т.к. я с линуксом не работал вообще. |
|
Цитата:
|
Время: 07:09. |
Время: 07:09.
© OSzone.net 2001-