Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

програма на C безкраен масив

Featured Replies

здравейте написах един код на C за да изпълнява програма на всяка минута и да спира системета в 3:00 часа но когато е изпълнена натоварва процесора до 30 %

каква е причината и мога ли да я оправя да не товари CPU

ето я програмата

#include <stdio.h>

#include <time.h>

#include <string.h>

#include <stdlib.h>

int main(void){

register char c[100];

int sum=0,sum1=0;

time_t a;

struct tm *b;

a=time(0);

b=localtime(&a);

sum1=b->tm_min;

for(;;){

a=time(0);

b=localtime(&a);

sprintf(c,"%d:%d:%d", b->tm_hour, b->tm_min, b->tm_sec);

sum=b->tm_min;

if(!strcmp(c,"3:0:0")){ system("halt");

exit(1);}

if(!b->tm_min){

sum1=sum;

}

else if(sum==(sum1+1)){

sum1=sum;

system("ntpdate 129.132.2.21");}

//printf("%s\n", c);

//if(!strcmp(c,"3:0:0")){ system("halt");

//exit(1);}

}

return 0;}

здравейте написах един код на C за да изпълнява програма на всяка минута и да спира системета в 3:00 часа но когато е изпълнена натоварва процесора до 30 %

каква е причината и мога ли да я оправя да не товари CPU

ето я програмата

#include <stdio.h>

#include <time.h>

#include <string.h>

#include <stdlib.h>

int main(void){

register char c[100];

int sum=0,sum1=0;

time_t a;

struct tm *b;

a=time(0);

b=localtime(&a);

sum1=b->tm_min;

for(; ;){

a=time(0);

b=localtime(&a);

sprintf(c,"%d:%d:%d", b->tm_hour, b->tm_min, b->tm_sec);

sum=b->tm_min;

if(!strcmp(c,"3:0:0")){ system("halt");

exit(1);}

if(!b->tm_min){

sum1=sum;

}

else if(sum==(sum1+1)){

sum1=sum;

system("ntpdate 129.132.2.21");}

//printf("%s\n", c);

//if(!strcmp(c,"3:0:0")){ system("halt");

//exit(1);}

}

return 0;}

извинете безкраен цикъл for

Как очакваш да не ти натоварва системата, щом си написал програма която прави непрекъснато едно и също нещо? Това, което искаш се прави, като кажеш на операционната система да ти изпрати "събитие" в определен момент, и "приспиш" програмата си докато дойде събитието.

  • Автор

Как очакваш да не ти натоварва системата, щом си написал програма която прави непрекъснато едно и също нещо? Това, което искаш се прави, като кажеш на операционната система да ти изпрати "събитие" в определен момент, и "приспиш" програмата си докато дойде събитието.

а с каква функция се прави това може ли пример или линк

Как очакваш да не ти натоварва системата, щом си написал програма която прави непрекъснато едно и също нещо? Това, което искаш се прави, като кажеш на операционната система да ти изпрати "събитие" в определен момент, и "приспиш" програмата си докато дойде събитието.

много правилно, всяка съвременна операционна система има някакъв механизъм за разписания :)

а с каква функция се прави това може ли пример или линк

зависи от операционната система. И идеята е че механизма на разписанието просто ще стартира командата за спиране на ОС
  • Автор

много правилно, всяка съвременна операционна система има някакъв механизъм за разписания :)

зависи от операционната система. И идеята е че механизма на разписанието просто ще стартира командата за спиране на ОС

OS linux slackware може ли пример или линк

Ами както казах, това не е стандарно в езика и зависи от операционната система. Може би за твоите цели (ако не ти трябва голяма точност и си под Windows ) Sleep ще ти свърши работа - слагаш си в цикъла Sleep с някакъв разумен интервал и това ще ти разтовари процесора - колкото по-голям е интервала, толкова по-малко ще ти товари програмата обаче такава ще е и максималната грешка в края.

Редактирано от flare (преглед на промените)

Ами както казах, това не е стандарно в езика и зависи от операционната система. Може би за твоите цели (ако не ти трябва голяма точност и си под Windows ) Sleep ще ти свърши работа - слагаш си в цикъла Sleep с някакъв разумен интервал и това ще ти разтовари процесора - колкото по-голям е интервала, толкова по-малко ще ти товари програмата обаче такава ще е и максималната грешка в края.

Идейно така работи и крона, само че активирането на процеса става по такт от ядрото (всяка минута) и той проверява дали има в буфера нещо за тази минута, ако да го изпълнява, ако не приключва
  • Автор

Ами както казах, това не е стандарно в езика и зависи от операционната система. Може би за твоите цели (ако не ти трябва голяма точност и си под Windows ) Sleep ще ти свърши работа - слагаш си в цикъла Sleep с някакъв разумен интервал и това ще ти разтовари процесора - колкото по-голям е интервала, толкова по-малко ще ти товари програмата обаче такава ще е и максималната грешка в края.

ок мерси значи безкрайния цикъл товари така ли

Редактирано от capnemo (преглед на промените)

ок мерси значи безкрайния цикъл товари така ли

да, такава програма ще работи непрекъснато, проверявайки времето или там каквото трябва. не това е начина за управление на времето :)

Редактирано от capnemo (преглед на промените)

  • Автор

да, такава програма ще работи непрекъснато, проверявайки времето или там каквото трябва. не това е начина за управление на времето :)

ще опитам

  • Автор

ще опитам

така ублекчава със sleep

char c[100];

int sum=0,sum1=0;

time_t a;

struct tm *b;

a=time(0);

b=localtime(&a);

sum1=b->tm_min;

for(;;){

system("sleep 10");

a=time(0);

b=localtime(&a);

sprintf(c,"%d:%d:%d", b->tm_hour, b->tm_min, b->tm_sec);

printf("%s\n",c);

sum=b->tm_min;

if(sum>=55 && b->tm_hour==2){

system("ntpdate 129.132.2.21");

a=time(0);

b=localtime(&a);

sum=b->tm_min;

sprintf(c,"%d:%d:%d", b->tm_hour, b->tm_min, b->tm_sec);

printf("%s\n",c);}

if(sum1==(sum+1)){

sum1=sum;

system("ntpdate 129.132.2.21");}

if(!strcmp(c,"3:0:0")){

system("halt");

exit(1);}

if(!b->tm_min){

sum1=sum;}

else if(sum==(sum1+1)){

sum1=sum;

system("ntpdate 129.132.2.21");}

else sum1=sum;

}

мерси много :)

така ублекчава със sleep

#include <stdio.h>

int main(void){

char c[100];

int sum=0,sum1=0;

time_t a;

struct tm *b;

a=time(0);

b=localtime(&a);

sum1=b->tm_min;

for(; ;){

system("sleep 10");

a=time(0);

b=localtime(&a);

sprintf(c,"%d:%d:%d", b->tm_hour, b->tm_min, b->tm_sec);

printf("%s\n",c);

sum=b->tm_min;

if(sum>=55 && b->tm_hour==2){

system("ntpdate 129.132.2.21");

a=time(0);

b=localtime(&a);

sum=b->tm_min;

sprintf(c,"%d:%d:%d", b->tm_hour, b->tm_min, b->tm_sec);

printf("%s\n",c);}

if(sum1==(sum+1)){

sum1=sum;

system("ntpdate 129.132.2.21");}

if(!strcmp(c,"3:0:0")){

system("halt");

exit(1);}

if(!b->tm_min){

sum1=sum;}

else if(sum==(sum1+1)){

sum1=sum;

system("ntpdate 129.132.2.21");}

else sum1=sum;

}

мерси много :)

1. точно командата ntpdate си живее много добре в cron 2. тази команда е част от един демон ntp, конфигурирайте го като тайм клиент и ще имате точно време на машината си. Това с програмата е идиотско, повярвате на човек, който се занимава почти 20 години линукс

  • Автор

1. точно командата ntpdate си живее много добре в cron

2. тази команда е част от един демон ntp, конфигурирайте го като тайм клиент и ще имате точно време на машината си.

Това с програмата е идиотско, повярвате на човек, който се занимава почти 20 години линукс

с crontab работи мерси

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.