Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2011, 22:01   #1
Mustdieken
Новичок
Джуниор
 
Регистрация: 23.05.2011
Сообщений: 1
По умолчанию Интерпретация командной троки.Файловые операции в POSIX.

Стоит такое задание:
Написать программу, которая обеспечивает работу команды вида :
[имя_команды] [- a|- b] [- o исходный файл],
где - a и - b несовместимые флаги
- если заданный флаг - a команда отображает время в секундах, которое прошло с момента загрузки системы;
- если заданный флаг - b команда отображает число процессов, которые работают в системе;
Полученная информация также записывается в файл, имя которого задается как аргумент опции - o.
То что я смог сделать.Делать в среде Linux
Код:
#include<unistd.h>
#include<stdio.h>
int main(int argc,char *argv[])
{
 int c; //Имя анализируемой опции
 int aflg=0; //Признак того, что задана опция a 
 int bflg=0; //Признак того, что задана опция b
 int errflg=0;//Флаг наличия ошибки в командной строке
 int flg='?'; //Флаг (a или b), заданый в командной строке 
 char *ofile=NULL; //Указатель на аргумент опции o
 opterr=0; /*Подавим стандартную диагностику  независимо от первого символа цепочки имен опций*/
 while((c=getopt(argc,argv,":abo:"))!=-1)
   {
    switch(c)
      {
       case 'a': aflg++;
      		 flg=c;
                 if(bflg)
                   { 
	        	fprintf(stderr,"Opcii a i b nesovmestymy\n");
	  	        errflg++;
	           }
       	         break;
       case 'b': bflg++;
      		 flg=c;
                 if(aflg)
                   { 
	        	fprintf(stderr,"Opcii a i b nesovmestymy\n");
	  	        errflg++;
	           }
       	         break;	
       case 'o': ofile=optarg;
                 break; 		   
       case ':': fprintf(stderr,"Otsytstvyet argument opcii -%c\n",optopt);
                 errflg++;
		 break;
       case '?': fprintf(stderr,"Nedopustymaya opciya -%c\n",optopt);
                 errflg++;
		 break;
      }
    }
  if(errflg)
  {
   (void)fprintf(stderr,"Ispol'zovanie: %s: [-a | -b] [-o vidnoy_file] [argument ...]\n",argv[0]);
   return (1);
   }
   printf("Zadanniy flag: %c\n",flg);
   printf("Argument opcii  o: %s\n",ofile);
   printf("Ostatok komandnoi stroki: ");
   for(;optind<argc;optind++)
     {    
      printf(" %s",argv[optind]);
     }
   printf("\n");
   return 0;
}
Понимаю что дальше нужно описать и реализовать что при флаге -а выведет время работы системы, а при флаге -b кол-во процессов.
И то что выведется записать в файл.
Но мы не успеваем это выучить и потому дали самостоятельно. Ищу информацию но понять не могу.
Реализовать нужно через uptime и procs. Очень прошу помощи
Mustdieken вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++Робота со строками и файловые операции((Где же ошибка??? Scarletred Помощь студентам 0 24.05.2010 03:58
Файловые операции _GT_ Общие вопросы C/C++ 1 08.05.2010 20:48
Троки и символы! Korun Помощь студентам 0 23.12.2009 16:21
Posix Threads Ghevond20 Общие вопросы C/C++ 0 12.12.2009 01:31