C/C++

shmat() es mar lefoglalt terulet megcimzese

Fórumok

Sewastok!

Adott ket teljesen kulon futo process. Az egyik shmget-tel lefoglal egy adott memoriateruletet, elore ismert, fix azonosito-val, majd shmat-tal a nevterebe csatolja. A masodik process shmget-tel es ugyanazzal a fix kulccsal megkapja a megfelelo azonositot, de az shmat masik memoriacimmel csatolja be a nevterbe az id altal jelolt memoriateruletet.

Mindket esetben NULL pointert adtam meg az shmaddr valtozonak.

Meg csak most ismerkedem a megosztott memoriaterulet hasznalataval, igy a fogalmak lehet, hogy nem pontosak, de szerintem ertheto amit leirtam. Eddig barhol olvastam utana az shmget es shmat fuggvenyhivasoknak, mindenhol azt irtak, hogyha mar letezik a memoriaterulet es az shmget-nel megadott azonosito egyezik, akkor a kulon futo processek el tudjak erni az erintett memoriateruletet. Egyelore Linux kernel-t futtotato rendszereken probaltam csak, de meg nem jott ossze.

Elore is koszonom a hozzaszolasokat.

C kezdő vagyok

Fórumok

Sziasztok!

Van egy C-ről szóló könyvem! The C Programming Language 2nd Ed.

Az első néhány programot még szépen meg tudtam csinálni ahogy azt leírták! Azonban eljutottam egy olyan feladathoz, ahol elakadtam!

Eleinte ha valamelyik program nem futott le, akkor leellenőriztem, a könyvben lévőt. Ha copy-paste-val bemásoltam, s ott futott, akkor csak én üthettem el.

Azonban most eljutottam két olyan programhoz is, amiket hiába másolok be, nem fut. Mutatom:

#include < stdio.h >
#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */
/* count lines, words, and characters in input */
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c = '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}

A hibaüzenetem pedig a következő:
word.counting.c:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token

Egyébként a könyv úgy tanítja, hogy:
cc fájlneve.c
majd
./a.out

De úgy tudom hogy van másik megoldás is a gcc-vel (linux alatt vagyok), ami kicsit modernebb.
Azt valaki el tudná magyarázni, hogy működik? A hiba megoldásán túl?

Előre is köszi

Péter

futás ellenőrzés

Fórumok

Hogy tudnám azt c-ben magvalósítani, hogy ellenőrizzem azt, hogy a program egy példánya fut e már.
Azaz van e arra valamilyen szép megoldás, hogy megkérdezzem, hogy fut e már.

gtkwidget keresése

Fórumok

Sziasztok!

Hogyan lehet egy gtkcombobox eseményében egy label tulajdonságát megváltoztatni? Nem akarom a labelt globálisként definiálni, vagyis szükségem lenne egy olyan függvényre amivel a label referenciáját ki tudom keresni. Emlékeim szerint van ilyen, de régen használtam és elfelejtettem, a függvény referencia oldal meg akkora, hogy elvesztem benne.

több szál kezelése

Fórumok

Egy elvi kérdésem lenne. Lenne egy alkalmazás, ami ciklusonként felovas pl egy adatfile-t vagy kiolvas adatbázis adatokat. A kapott infó alapján kialakít tcp kapcsolatokat, ezeket kezeli, dolgozik bennük, majd ha a felolvasott infó alapján már nem kell, akkor leboltja, vagy ha kell újat azt felépíti.
Ha lebomlik vagy valami más hiba van akkor akkor fix folyamatot követ végig, ez talán most nem lényeg.
Nem tudom igazán merre induljak el. Csináljak egy nagy ciklusra épülő kódot, vagy az egyes tcp kapcsolatokat bizzam egy egy thread-re, amit a szülö kezel, mivel mind ugyan azt a dolgot csinálja. Vagy van valami jó javaslatotok, tényleg csak elvi szinten.
Lehet C vagy C++ is, amelyik jobban simul a feladathoz szerintetek és egyszerűbb a megvalósítása.

Köszi

kép forráskódjának használata

Fórumok

Sziasztok!

Azt szeretném megtudni, hogy GIMP ből .c, vagy .h formátumba mentett képet hogy lehet használni a forráskódban? Ha jól láttam, valamilyen struktúrát készít a GIMP kimeneti állományként. De hogy lesz abbol megjeleníthető kép a programban? (SDL-t használok).
Köszi!

Qt4: QString to char*, keeping special characters

Fórumok

Szisztok!

Egy eleg bosszanto problemahoz erkeztem, de valahogy megsem sikerult megtalalnom a megoldast.
A kerdes roppant egyszeru:

Van mondjuk egy QLineEdit-em, abba a user gepel valamit, ekezetes betuket hasznalva. Lekerni ennek tartalmat konnyen megy, a kapott ertek tipusa QString. Hogyan tudom ezt atkonvertalni anelkul char*-ra, hogy az ekezetek elvesznenek?

A Qt defaulton utf8-at hasznal, rendben van. Eleg sok mindent kiprobaltam mar, pl: QString: toAscii, toLatin1, toLocal8Bit, vagy siman toStdString es annak a c.str()-je. A konvertalgatasok nem jartak tul sok sikerrel, bar mintha egyszer valamilyen verzioban a cout szepen irta volna ki a betuket, de vele parhuzamosan a qDebug() tovabbra sem.

Eleg kezenfekvo a szituacio, gondolom masok is talalkoztak mar vele.
Mi a megoldas?

Koszi elore is.

[megoldva] C code cleaner, vagy kódformázó / tisztító / rendbeszedő

Fórumok

Üdv,

Tudna valaki ajánlani egy C kódtisztító progit? Olyat keresnék ami parancssoros és megtalálható a debian repóban.

Code::Blocks tud ilyet win platformon, de a repókra rákeresve sajna nem találok semmilyen megoldást.

Még egy kérdésem lenne: 'rats' és 'flawfinder'-en kívűl van még valami jó kis cucc ami átnézi a kódot biztonsági vagy egyéb hibák után kutatva?

Köszi.

limits.h kell vagy sem?

Fórumok

Sziasztok!

Azzal talatam magam szemben, hogy az egyik kis kodban benne van az UINT_MAX, a limits.h pedig nincs beinkludolva(egy masolt kod, az eredetiben sem volt, ha minden igaz). Debian alatt szepen le is fordul, g++ 4.3.2-vel, official verzio, 32bites architectura.

Ellenben most egy ubuntu gepen kene leforditani, az mondjuk x86_64-es arch, de ugyanaz a g++, es azt mondja, hogy
"‘UINT_MAX’ was not declared in this scope"

segiteni megmaragyazni ezt valaki, miert van ez? es ki lehet e javitani, hogy forduljon ubuntu is, a kod megvaltoztatasa nelkul?

koszi,
Zsolt

Windows: linkelési probléma

Fórumok

Sziasztok!

Távoli ismerősöm próbálkozik egy program fordításával. E-mailben levelezgetünk róla. Sajnos Windows XP-t használ, és most nem tudok már további tanácsot adni, hogy mit tegyen.

Erről a programról van szó:
http://sourceforge.net/project/showfiles.php?group_id=200880

Az MSDN-t feltelepítette, mert már az első próbálkozáskor a következő hibát dobta fordításkor:
RWAudio_win.o(.text+0xfa1):RWAudio_win.cpp: undefined reference to `waveInOpen@24'

Ekkor ezen web oldal alapján, arra gondoltam, hogy fel kell telepíteni az MSDN-t:
http://msdn.microsoft.com/en-us/library/ms713735(VS.85).aspx

Fel is telepítette, de most meg linkeléskor kap hibát:
RWAudio_win.obj : error LNK2019: unresolved external symbol __imp__waveInOpen@24 referenced in function "public: int __thiscall RWAudio::RecOpen(void)"

(Persze ennél több ugyanilyen jellegű hiba van linkeléskor!) Tehát lényegében, ugyanarra a waveInOpen() függvényről van szó, csak most már a linkelési fázisban akad el a fordító.

Mit javasoltok a probléma megoldására? (Ha jól tudom, Dev-C++ programot használ az ismerősöm a fordításhoz.)