Forum Linux.pl

Programowanie => Bash, skrypty powłoki => Wątek zaczęty przez: Dregorio w 2013-12-19, 18:38:15

Tytuł: Nauka BASH, Procesów, Wątków itd.
Wiadomość wysłana przez: Dregorio w 2013-12-19, 18:38:15
Witam, mój problem nie dotyczy tylko BASH, ale też i języka C, ale nie będę zakładał 2 wątków. Chciałbym podszkolić się w BASH, możecie polecić mi książki? Te materiały na internecie są jakieś 'słabe'. Chciałbym też nauczyć się o procesach, wątkach itd. możecie polecić mi jakieś materiały/książki?

BTW. jeśli mam program gdzie:

switch(fork())
case -1: perror
case 0: costam
default: fork(); fork();
.
.
.

to jak mam liczyć te forki?, jeśli to np. jest w pętli? Ile będzie procesów wraz z macierzystym?
Tytuł: Nauka BASH, Procesów, Wątków itd.
Wiadomość wysłana przez: roobal w 2013-12-19, 20:11:31
Nie wiem co masz na myśli pod pojęciem "słabe", większość poradników skierowana jest dla początkującyh, wiec nie ma co oczekiwać cudów. Może na początek to Cię zainteresuje --> http://www.tldp.org/LDP/abs/html/
Tytuł: Nauka BASH, Procesów, Wątków itd.
Wiadomość wysłana przez: 1709 w 2013-12-19, 23:15:17
Ja dodam ogólne linki które są dostępne na ircu,
ogólne z google nie zawsze są polecane, bo mogą być nie aktualne.
Więcej nie pomogę bo się nie znam.

http://mywiki.wooledge.org/BashFAQ
http://mywiki.wooledge.org/BashGuide
http://www.gnu.org/software/bash/manual/bash.html
http://wiki.bash-hackers.org/doku.php
http://www.grymoire.com/Unix/Quote.html
http://www.shellcheck.net/
Tytuł: Nauka BASH, Procesów, Wątków itd.
Wiadomość wysłana przez: darkdancer w 2013-12-20, 11:20:57
Cytat: Dregorio
switch(fork())
case -1: perror
case 0: costam
default: fork(); fork();
Zakładając, że każda z operacji forkowania nie zwróci błędów to 5 (domyślam się, że jest break między poszczególnymi opcjami w switchu).
Małe wyjaśnienie:
1. Program trafia na switch wykonuje operację fork co daje dwa procesy i w każdym sprawdza wartość jaką zwróciła funkcja fork().
2. Dla procesu potomnego (dziecka) fork() zwraca 0, czyli wykonuje się "costam" (dalej zakładam, że jest tam break i program wychodzi z konstrukcji switch).
3. Dla procesu, który wywoływał funkcję fork() zwraca identyfikator procesu dziecka, czyli wykonuje się sekcja default, gdzie mamy znowu funkcję fork(), dając łącznie 3 procesy.
4. W dwóch procesach potomnych, które powstały po uruchomieniu sekcji default, jest kolejna funkcja fork(), po której wywołaniu powstają dwa nowe procesy, dając łącznie liczbę 5.