|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Помогите!!! |
|
Помогите!!!
|
Новый участник Сообщения: 14 |
Не могу сделать программу на С для линукса.
Нужно: Вывести на экран полной информации о пользователях спомощью команды ./bin/ls переданному как второй параметр командной строки с исползованием параметра -all передаваемого программе ./bin/ls (Необходимо использовать системный вызов execle и pid fork() ) Помогите если кто знает. |
|
Отправлено: 00:03, 03-11-2008 |
info man howto Сообщения: 6958
|
Профиль | Сайт | Отправить PM | Цитировать Только за десяток борзых щенков
![]() |
------- Отправлено: 08:45, 03-11-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Программы выглядит таким образом, проблема в другом
#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 Так вот мне нужно каким то образом объяснить, что происходит дальше, так я понимаю, а объяснить не могу т.к. я с линуксом не работал вообще. |
Отправлено: 17:27, 18-12-2008 | #3 |
info man howto Сообщения: 6958
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 13:12, 22-12-2008 | #4 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата ruslandh:
|
||
Отправлено: 01:27, 23-12-2008 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
|