Sziasztok!
Állítom a pipe méretet (kernel > 2.36), ahogy ez írva vagyon:
fcntl(fd, F_SETPIPE_SZ, méret);
Természetesen a méret < mint a /proc/... - ban meghatározott
érték. Azt mondja a fordító, az F_SETPIPE_SZ - ra, hogy olyan
márpedig nincs. Pedig van, mégpedig a /bits/fcntl.h - ban, amit
az fcntl.h includál be. Ez önmagában őrület.
Fogom a fájlomat és átnevezem fájl.c - ről fájl.cpp-re,
a CXX változót pediglen g++ -ra állítom. És lőn csoda:
máris létezik az F_SETPIPE_SZ. Őrület a köbön (Ö^3)!
Erre varrjatok gombot!
Bele futott ebbe már valaki?
- 2225 megtekintés
Hozzászólások
Helló,
Nálam a linux/fcntl.h is tartalmazza a F_SETPIPE_SZ-t. Ugyanannyi az értéke és ezzel fordul is. A __USE_GNU nincs definiálva a bits/fcntl.h-ban.
- A hozzászóláshoz be kell jelentkezni
No, ezt a USE_GNU -t megnézem magamnak. A linux/fcntl.h nem
igazán egészséges. Köszi a hozzászólást.
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni
__USE_GNU :: semmit nem hozott a konyhára )-::
Elég csak a fájlt átneveznem, máris megvan a pipe_size.
Attól tartok ez egy bug. Slackware 13.37 32 bit, gyári kernel.
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni
Nálam ha a __USE_GNU-t definiálom az include fcntl.h előtt, akkor felismeri a F_SETPIPE_SZ-t, anélkül itt sem. Debian SID 64bit
- A hozzászóláshoz be kell jelentkezni
a __USE_GNU .cpp file-ra g++-al definialva van, .c-re gcc-vel nincs.
# include <fcntl.h>
#if defined(__USE_GNU)
#error
#endif
int main() {}
$ g++ x.cpp
x.cpp:4:2: error: #error
$ gcc x.c
$
a __USE_GNU a features.h-ban definialodik, ha van _GNU_SOURCE. Ugy tunik ez c++ alatt automatikus, C alatt explicit meg kell adni
C++ alatt minden include es define megadasa nelkul:
#if defined(_GNU_SOURCE)
#error
#endif
int main() {}
$ g++ x.cpp
x.cpp:3:2: error: #error
$
szerk: szerintem itt arrol lehet szo, hogy c++-ban csak GNU-s rendszerre tudsz fejleszteni (a gnu compilerrel persze), mig C-ben esetleg mas rendszerekre is, tehat nem bug. De csak talalgatok az okokrol..
- A hozzászóláshoz be kell jelentkezni
Nálam _GNU_SOURCE kell (opensuse).
- A hozzászóláshoz be kell jelentkezni
http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.h…
http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macr…
Hogy konkrétan az F_SETPIPE_SZ melyiket igényli, fogalmam sincs, de a már ajánlott _GNU_SOURCE találónak tűnik.
- A hozzászóláshoz be kell jelentkezni
Ha már ilyen szépen teszteled a GCC vicceit, adhatnál egy esélyt a PCC-nek és a CLang/LLVM párosnak is. Csak hogy könnyebb legyen szívni.
- A hozzászóláshoz be kell jelentkezni