Srodne teme
Kliknite za generisanje liste srodnih tema...
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

OPEN_MAX

[es] :: BSD :: OPEN_MAX

[ Pregleda: 2934 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
217.26.67.*

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon OPEN_MAX27.05.2003. u 22:05 - pre 254 meseci
Jel ima neka dobra dusa koja koristi neki BSD da iskompajlira i pokrene ovaj primer. Program sve sto vraca jeste maksimalan moguci broj otvorenih fajlova.... I da jos usput kaze koju verziju BSD-a koristi.

Code:

#include <unistd.h>
#include <stdio.h>

int main(){
  printf("sysconf: %d\n",sysconf(_SC_OPEN_MAX));
  return 0;
}

 
Odgovor na temu

B o j a n
eCTRL
EU

Član broj: 1178
Poruke: 2925
194.247.209.*

Jabber: bc@default.co.yu
Sajt: default.co.yu/~bc


+1 Profil

icon Re: OPEN_MAX27.05.2003. u 23:02 - pre 254 meseci
dobradusa:

Code:

$ gdb test
warning: failed to install memory consistency checks; configuration should define NO_MMCHECK or MMCHECK_FORCE
GNU gdb 4.16.1
Copyright 1996 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-openbsd3.2"...
(gdb) run
Starting program: /tmp/test

Program received signal SIGSEGV, Segmentation fault.
0x0 in ?? () at test.c:4
4
(gdb)


Code:

uname -a
OpenBSD marge.simpsons.net.yu 3.2 MARGE#12 i386

"It's okay, I'm just admiring to the shape of your skull!" -- Dr. Gonzo
 
Odgovor na temu

Dusan Marjanovic
Consultant, SAS
Beograd

Član broj: 59
Poruke: 1290
*.ptt.yu

Jabber: dusanm@gmail.com
ICQ: 84621598
Sajt: marjanovic.net


+6 Profil

icon Re: OPEN_MAX27.05.2003. u 23:44 - pre 254 meseci
sysconf: 3636

4.8-STABLE FreeBSD
VMware VCP/Microsoft MCSE 2003/HP ASE
 
Odgovor na temu

papak

Član broj: 2139
Poruke: 61
*.ri.ri.cox.net



Profil

icon Re: OPEN_MAX28.05.2003. u 00:04 - pre 254 meseci
volta% ./a.out
sysconf: 3636
volta% uname -a
FreeBSD volta.tazznetworks.com 5.0-RELEASE-p7 FreeBSD 5.0-RELEASE-p7 #3: Wed May 14 15:44:16 EDT 2003 [email protected]:/usr/obj/home/idb/src/bsd/50/src/sys/VOLTA i386
volta%
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.verat.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: OPEN_MAX28.05.2003. u 13:29 - pre 254 meseci
Simpa :))) lepo sam iznenadjen :)))) vrednostima :))) linux dozvoljava samo 1024 fajla da se otvore :)) ne znam samo kako im je izletelo da bash bude cifra 3636 a ne neki stepen dvojke :)))

Mada opet mi nije jasno kako ovo nije htelo da radi na openBSD-u kod bojana. ovo je nesto najjednostavnije.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: OPEN_MAX28.05.2003. u 13:43 - pre 254 meseci
Evo ti moje pretpostavke „zašto“.

POSIX sve ove *_MAX stvari definiše kao:
Ukoliko je definisan *_MAX, onda on predstavlja najveći broj *“.

Znam da bar GNU/Hurd nema takva ograničenja (najčešća greška je da ljudi pretpostave da je PATH_MAX definisan), pa gomila programa sadrži takvu grešku.

Ukoliko ova promenljiva nije definisana, onda nema ograničenja broja otvorenih fajlova, dužine putanje i slično, osim realnog ograničenja memorije.

Znači, ako ne radi na nekom sistemu, onda je taj sistem kvalitetniji :-P
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

rivan
Ivan Radovanović

Član broj: 1901
Poruke: 71
*.ppp-bg.sezampro.yu

ICQ: 212235650


Profil

icon Re: OPEN_MAX30.05.2003. u 23:56 - pre 254 meseci
deluje mi malo cudno da prodje prevodjenje, a program pukne sa segmentation faultom ako ta konstanta nije definisana?

Pogledah i man za sysconf na FreeBSDu 4.4 i na nekom linuxu i interesantna je razlika u objasnjenju za _SC_OPEN_MAX:
FreeBSD manual kaze da je to maksimalan otvoren broj fajlova po user id-u
Linux manual kaze da je to maksimalan otvoren broj fajlova po procesu

???
uzgred kod mene programce vraca 4136 (FreeBSD 4.4) sto znaci da je to moguce podesavati u kernelu (meni je povecan broj usera), i te vrednosti mogu da se vide i sa "sysctl kern.maxfiles" i kern.maxfilesperproc (sto sugerise da je manual netacan...)
 
Odgovor na temu

BORG
Aleksandar (Sasa) U.
*NIX System/Network Administrator
BL-RS

Član broj: 200
Poruke: 916
*.teol.net

ICQ: 46124351
Sajt: bitches.kicks-ass.net


Profil

icon Re: OPEN_MAX31.05.2003. u 16:09 - pre 254 meseci
$ ./a.out
sysconf: 64
$

OpenBSD 3.3.

With a PC, I always felt limited
by the software available.
On Unix, I am limited only by my knowledge.

--Peter J. Schoenster
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
217.26.67.*

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: OPEN_MAX02.06.2003. u 15:07 - pre 254 meseci
Citat:
tOwk:
Evo ti moje pretpostavke „zašto“.

POSIX sve ove *_MAX stvari definiše kao:
Ukoliko je definisan *_MAX, onda on predstavlja najveći broj *“.

Znam da bar GNU/Hurd nema takva ograničenja (najčešća greška je da ljudi pretpostave da je PATH_MAX definisan), pa gomila programa sadrži takvu grešku.

Ukoliko ova promenljiva nije definisana, onda nema ograničenja broja otvorenih fajlova, dužine putanje i slično, osim realnog ograničenja memorije.

Znači, ako ne radi na nekom sistemu, onda je taj sistem kvalitetniji :-P

Pa ne bih se slozio u uvom slucaju za OPEN_MAX, jer ti fajlove otvaras sistemskim pozivom open a on vraca int, tako da u najboljem slucaju na 32 bitnoj arhitekturi je 32767. E sada ovo programce je u skladu sa posixom pa ako to sistem ne moze da iskompajlira onda je los znak jer nije 100% posix kompatibilan.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: OPEN_MAX02.06.2003. u 15:48 - pre 254 meseci
Prvo da skrenem pažnju na važnu stvar: na 32-bitnim arhitekturama je int 32-bitni, a to znači opseg -2147483647 do 2147483648 (tj. isto koliko može memorije da se pokrije, pošto je najčešće 32-bitni sistem takav da koristi i 32-bitne pokazivače) — ovo je sigurno slučajna greška.

Citiraću http://www.opengroup.org/onlin...edefs/limits.h.html#tag_13_24:
Citat:
Runtime Invariant Values (Possibly Indeterminate)

A definition of one of the symbolic names in the following list shall be omitted from <limits.h> on specific implementations where the corresponding value is equal to or greater than the stated minimum, but is unspecified.

This indetermination might depend on the amount of available memory space on a specific instance of a specific implementation. The actual value supported by a specific instance shall be provided by the sysconf() function.


Takođe, open() poziv zaista vraća „int“, ali najčešće njegov opseg pokriva svu raspoloživu memoriju na računaru, tj. ograničenje je u tom slučaju je hardver, a ne operativni sistem (kao što sam već i rekao).

Uz to, na http://www.opengroup.org/onlinepubs/007904975/functions/open.html piše:
Citat:
The open() function shall return a file descriptor for the named file that is the lowest file descriptor not currently open for that process. The open file description is new, and therefore the file descriptor shall not share it with any other process in the system.


Eto, znači, moguće je da ti uz svaki pojedinačni proces otvoriš onoliko fajlova koliko opseg int-a omogućava, ako to OS dozvoljava.


Ovaj program jeste POSIX kompatibilan, jer prema http://www.opengroup.org/onlin...7904975/functions/sysconf.html treba da bude vraćena vrednost -1 u slučaju da ograničenja nema, bez menjanja errno promenljive.

To je ono što sam mislio pod „ne radi“.


Usput, POSIX definicija OPEN_MAX-a je:
Citat:

{OPEN_MAX}
Maximum number of files that one process can have open at any one time.
Minimum Acceptable Value: {_POSIX_OPEN_MAX}

što bi moglo da znači da FreeBSD (ako je rivan ispravno izneo) nije POSIX kompatibilan ;-)

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Dejan Lozanovic
Dejan Lozanovic
Beograd

Član broj: 691
Poruke: 2325
*.verat.net

Jabber: null@elitesecurity.org
Sajt: speedy-order.com


+75 Profil

icon Re: OPEN_MAX02.06.2003. u 18:02 - pre 254 meseci
Da bio je lapsus i to zesci :)) svi znamo koliko je 2^32 :)

Sto se ovog drugog tice, mene je tu zabrinulo sto je bojanu pukao program :)) zato sam rekao da mi tu nesto smrdi :)) a sto se frebsd-a tice mislim da je to ipak greska u manualu :), u protivnom necu da kazem sta mislim o FreeBSD-u u tom slucaju da ne bi poceo neki opasan flejm :)
 
Odgovor na temu

rivan
Ivan Radovanović

Član broj: 1901
Poruke: 71
*.ppp-bg.sezampro.yu

ICQ: 212235650


Profil

icon Re: OPEN_MAX04.06.2003. u 22:16 - pre 254 meseci
napisah kako se zovu sistemske promenljive koje imaju veze sa _OPEN_MAX:
kern.maxfiles - maksimalan otvoren broj fajlova na sistemu
kern.maxfilesperproc - maksimalan otvoren broj fajlova po procesu

(ovo je u manualu za sysctl sistemski poziv valjda), tako da je ono ocigledno greska na drugom mestu u manualu (mozda je ispravljena u novijim verzijama?)
Inace root moze obe vrednosti da menja u toku rada (bez kompajliranja kernela i sl.)
 
Odgovor na temu

[es] :: BSD :: OPEN_MAX

[ Pregleda: 2934 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Kliknite za generisanje liste srodnih tema...
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.