Skyer1
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Может не туда пишу, но суть проблеммы в следующем есть программа на Линуксе написанная на С #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; } Дальше идет описание программы, так вот мне нужно поподробнее описание, а точнее, что делают и куда возвращают значения fork и execle я с линуксом не работал, поэтому не могу понять. После запуска программы на исполнение ОС загружает список команд в память, после чего процессор начинает последовательно выполнять этот список. В начале проверяем количество параметров, если параметров <1 то выдаем ошибку, иначе проверяем второй параметр. Если второй параметр является help, то вызывается help и завершаем работу программы, иначе с помочью fopen проверяется наличие файла указанного как параметр, если файл не существует выдаем ошибку и завершаем работу программы, иначе закрываем файл, создаем новый процесс c помочью системного вызова fork |