Platform: linux-3.3.8 és AIX-5/6
Jelenség: aio_cancel nem akarja leállítani az olvasást... talán nincs hangulata hozzá
Az érintett file egy pipe, amit O_RDWR módra nyitottam meg.
A hiba akkor lép föl, amikor a close előtt fel akarom számolni a függőben maradt aio_read-et. Persze mondhatnánk, hogy kár sokat aggódni, a close (vagy legkésőbb az exit) majd megoldja a kérdést. De AIX-on sajnos nem, ott a program belefagy a close-ba, ha az nincs, akkor az _exit-be (<exiting> státusban vár az öröklétig).
Nyilván az lesz a megoldás, hogy írok önnönmagam abba a pipe-ba, és akkor lesz mit kiolvasni, de azért érdekelne bármilyen meglátás a témával kapcsolatban.
- 5250 megtekintés
Hozzászólások
Az egész mese úgy indult, hogy AIX-en nem megy a SIGIO pipe-okon. Ne firtassuk, hogy miért, csak nem és kész. (Pedig linux-on már ki is fejlesztettem egy sigio-handlert, köztes-réteget, aki a SIGIO signalt 'multiplexálja': amikor beesik a SIGIO, az összes regisztrált handle-t megnézi (select), olvashatók-e, és amelyik igen, annak meghívja a handler-ét).
Ekkor jött az aio_read, de, most úgy látszik, az sem fenékig tejföl.
Most az jutott eszembe, hogy visszamegyünk a pipe-hoz, de a küldő a write után küld egy signal-t (kill(2)) a címzettnek... persze egy külön fájl is kell a címzett PID-jével... meg persze azonos user kell legyen a címzett...
Vagy még lehetne unix domain socket is, arra megy a SIGIO... azzal megint más gondok lennének, gondolom én.
- A hozzászóláshoz be kell jelentkezni