Tambien es cierto que ya hemos visto como pedir las teclas bajo X, yo mismo trate de hacer un keylogger usando la Xlib, pero tenia demasiada poca experiencia y costumbre de leer en ingles xD. Entonces si consigo pedir las teclas usando la Xlib, el problema estaria en como saber si se esta escribiendo en la terminal o en el entorno grafico. Bueno, supongo que siempre se pueden usar threads o hacer un fork. De todas formas tengo el mismo problema, que viene a ser que el fichero ocupa entre 10 y 15 KB (aunque despues de varias pruebas he visto 120 KB) y no es accesible, me cuelga el gedit.
Por que poll() no bloquea, está escribiendo a matar en ese bucle ... cambiá el fprintf por un printf, y fijate que sucede
Si no pongo un if revisando el char, me bombardea la salida de la terminal.
Si estás en entorno gráfico, los emuladores de terminales están corriendo bajo X, así que podría decirse que ahí no vas a tener problemas, por que podés usar el método de X (ejemplo? xterm y konsole son emuladores, pero usando el keylogger de X puede leerse lo que se les escribe, por que corren sobre X)
Pensalo así: Te instalás en el .rc del usuario que te interesa, y en base a eso, vas monitoreando si se arranca X ... si no se arranca, hacés un keylogging estándar, y si se arranca, hacés un fork() y te ponés a hacerlo con la manera de X también.
*En principio*
Saludos.
P.S → Mi blog es rrré político y hace poquito lo armé ... pero no lo ando publicitando, es decir, se lo pasé a pocas personas ... fuera de eso, lo referencio cuando necesito abordar un punto (como lo de GNU/Linux). Ahora ando escribiendo una entrada llamada "Un acercamiento al derecho de autor y licenciamientos copyleft", aunque quiero escribir algo de programación !!