De nem mutat semmit az lsof - ez a gond.
Egyébként tovább jutottam a dologgal. -> man proc, ezen belül /proc/pid/stat - ennek a fájlnak az 5. tagja a process group id, vagyis pgid, és ez megegyezik a ruby-s folyamatom pid-jével, ha ő az, akit forkolt az xdg-open. A kód is kész, szépen megtalálom a pid-et. Stimmel a pname is (gedit). Most jön a következő gond:
Így hogy már tudom a pid-et, hogyan várakozzak rá? Vagyis a befejezésére? Ugyanis a Process.wait osztály, vagy a bash beépített wait-je, vagy a C man 2 waitpid -je mind mind csakis gyermek folyamatra tudnak várakozni. És így hibát kapok, mert ez nem gyermek folyamat, mivel az xdg hívás forkolta tovább. A szülő pid-jére 1-est ad.
Pollingolni sem szép megoldás, mert bezáródhat a várakozás alatt a folyamat, és jöhet egy új ugyanolyan PID értékkel.
Most keresgéltem a /proc/PID mappában valami egyedi azonosítót, amire tudnék pollingolni pl. 0.1 sec időnként, hogy megvan-e még - ha nincs, akkor végeztem, a fájlt visszacsomagolom. De semmi ilyen egyedi azonosítót vagy tartalmat nem találok.
Erre ötlet valakinek?