Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   Помогите!!! (http://forum.oszone.net/showthread.php?t=121808)

Sky-er 03-11-2008 00:03 941201

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

ruslandh 03-11-2008 08:45 941365

Только за десяток борзых щенков :)

Sky-er 18-12-2008 17:27 984211

Программы выглядит таким образом, проблема в другом

#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 987050

http://www.opennet.ru/man.shtml?topic=fork&category=2

Sky-er 23-12-2008 01:27 987710

Цитата:

Цитата ruslandh
http://www.opennet.ru/man.shtml?topic=fork&category=2 »

Да это я как бы читал еще и в других источниках, я просто не могу конкретно описать, что в программе идет, а определения я и так знаю.


Время: 07:09.

Время: 07:09.
© OSzone.net 2001-