PDA

Показать полную графическую версию : Помогите!!!


Sky-er
03-11-2008, 00:03
Не могу сделать программу на С для линукса.
Нужно: Вывести на экран полной информации о пользователях спомощью команды ./bin/ls переданному как второй параметр командной строки с исползованием параметра -all передаваемого программе ./bin/ls (Необходимо использовать системный вызов execle и pid fork() ) Помогите если кто знает.

ruslandh
03-11-2008, 08:45
Только за десяток борзых щенков :)

Sky-er
18-12-2008, 17:27
Программы выглядит таким образом, проблема в другом

#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

Так вот мне нужно каким то образом объяснить, что происходит дальше, так я понимаю, а объяснить не могу т.к. я с линуксом не работал вообще.

ruslandh
22-12-2008, 13:12
http://www.opennet.ru/man.shtml?topic=fork&category=2

Sky-er
23-12-2008, 01:27
http://www.opennet.ru/man.shtml?topic=fork&category=2 »
Да это я как бы читал еще и в других источниках, я просто не могу конкретно описать, что в программе идет, а определения я и так знаю.




© OSzone.net 2001-2012