C wykonanie dodawania przez kilka sekund
Ostatnio zmodyfikowano 2017-11-02 11:27
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
|
|
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?
|
|
nanoant20 |
» 2017-10-31 18:59:17 Proste. #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 pgrep - x < nazwa procesu >
Jeżeli chcemy zobaczyć aktualne procesy to uzywamy polecenia "ps" z parametrami. Może to wyglądać tak int pro = system( "ps ax -o pid -o command" );
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 |
|
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? 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? |
|
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.
|
|
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 #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; }
|
|
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 |
|
1 2 « 3 » |