Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C wykonanie dodawania przez kilka sekund

Ostatnio zmodyfikowano 2017-11-02 11:27
Autor Wiadomość
nanoant20
» 2017-10-29 20:49:01
Dokładnie TAK, jak napisałeś.
Podaje Ci linka
http://www.staff.amu.edu.pl/~ttomek/sop/cwiczenia13.html
przeczytaj  Przykład 4  dokładnie Twój przypadek
P-166226
cybernetykpl
Temat założony przez niniejszego użytkownika
» 2017-10-31 09:30:03
system("pgrep -c -P &pid_procesu");

Jak zrobić aby ściągnął tutaj pid procesu?

P-166274
nanoant20
» 2017-10-31 18:59:17
Proste.

C/C++
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main( void )
{
    int return_value;
    return_value = system( "pgrep bash" );
    return return_value;
}

Oczywiście, zadziała to, pod warunkiem, że będzie uruchomiony Terminal Bash

C/C++
pgrep - x < nazwa procesu >

Jeżeli chcemy zobaczyć aktualne procesy to uzywamy polecenia "ps" z parametrami.
Może to wyglądać tak

C/C++
int pro = system( "ps ax -o pid -o command" );
//printf("pro = %d \n", pro);
return pro;

można te procesy wyświetlić za pomocą print zamiast return.
To jest po prostu przykład.

To jest elementarna wiedza z zakresu Unix/Linux
P-166294
cybernetykpl
Temat założony przez niniejszego użytkownika
» 2017-10-31 19:28:04
Chodzi o to aby zobaczyć liczbę procesów współbieżnych czyli dziłajacych z tym, w którym uruchamiam to polecenie.

A może to?

C/C++
system( "ps -aux | wc -l" );

Czy to możliwe aby tych procesów współbieżnych z działajacą apliakcją (z tym kodem) było aż 180?
P-166295
nanoant20
» 2017-10-31 21:27:53
Tak. Jest to możliwe, ze masz uruchomionych 180 demonów jednocześnie.
Jak to sprawdzić? Bardzo prosto.
1. odpal code:blocks'a ze swoim programem i uruchom program.
2. Otwórz terminal np. bash'a
3. wklep komendę (polecenie) ps ax -o pid -o command
4. policz jeżeli nie wierzysz :D

Na dole listy zobaczysz odpalonego code::blocks'a, Twój program, bash'a

Z tematu zrobił się off-topic

P.S.
W terminalu wykonaj (wpisz) polecenia --> top
Górna część pokazuje nam statystyki systemu,
takie jak obciążenie systemu i ilość aktywnych zadań
Tasks
Total - wszystkie procesy
Running - ilość aktywnych procesów
Sleeping - ilość śpiących procesów.
 
P-166299
cybernetykpl
Temat założony przez niniejszego użytkownika
» 2017-10-31 23:22:53
Jest tylko jedno ale:
jak po z++
dam tą linijkę (system("ps -aux | wc -l"); ) to ilość zliczeń w czasie 1 sekundy jest dużo mniejsza niż bez tej linijki.
bez system("ps -aux | wc -l"); 189062
a z tą linijką ilość zliczeń z++ w czasie 1 sekundy mam tylko zliczeń z++ 29

które jest prawidłowe

C/C++
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <cstdlib>

int main( void )
{
    long int i = 0;
    alarm( 1 );
    while( 1 )
    {
        printf( "%d\n", i );
        i++;
        printf( "pid %d ppid %d\n ", getpid(), getppid() );
        system( "ps -aux | wc -l" );
    }
   
    return 0;
}
P-166307
nanoant20
» 2017-11-02 11:27:18
Jak i jeden tak i drugi wynik jest prawidłowy.
Jeżeli w pętli while masz tylko inkrementacje, to procesor jest mniej obciążony.
Jeżeli w pętli while masz inkrementacje, potem wypisujesz printf jakieś wartości i na końcu wywołujesz jeszcze proces system(), który ma jakieś zadanie do wykonania, to wiadomo, że procesor ma więcej pracy, a to wszystko robi w ciągu 1 sekundy.
Step by Step loop while
1. printf( "%d\n", i ); <-- wypisuje wartość i
2. i++; <-- podnosi wartość i
3. printf( "pid %d ppid %d\n ", getpid(), getppid() ); <-- wypisuje wartośc pid
4. system( "ps -aux | wc -l" ); <-- wywołuje proces systemowy, który ma zadane do zrobienia (tutaj akurat zlicza wszystkie procesy systemowe)
i na nowo od kroku 1 do 4 i to wszystko w ciągu 1 sekundy
P-166353
1 2 « 3 »
Poprzednia strona Strona 3 z 3