aio_cancel nem megy...

 ( NevemTeve | 2012. szeptember 16., vasárnap - 21:14 )

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.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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.