Bug #1357

Updated by Serge Heiden about 5 years ago

'cqplib' (JNI CQP) stdout and stderr JNI CQP std outputs are not redirected to the TXM RCP log console (neither log file?) file log?) when running TXM from a setup. an installation.
These outputs are correctly well displayed when running TXM from the source within the and Eclipse IDE.

[SH: We must verify if there are difference of behaviors betweens OSes.
Hypothesis: one hypothesis would be that file I/O channels types (between binary and text mode) could have different behavior with respect to file descriptors flushing (a text typed channel could flush automatically on occurence of '\n' on some OS and not on some others).]

After some research it seems difficult (impossible?) to precisely manage the output timing and flushing from JNI to Java without modifying the native code.

[SH: what do you mean by 'timing'?, the current cqplib workflow is supposedly as follow:

- TXM Java
- a) call cqpQuery through CQi
- cqplib C
- b) call cqpQuery native C code
- c) some messages can be output to stdout and stderr
- in C output there can be two levels: fprintf (ANSI C high API) and write (Unix kernel low API)
- e) return cqpQuery result

Are we sure to flush in C (output) and in Java (input) every potential stdout and stderr generated at stage c)?]

For example from C code of CQP:
- call Java code inside JNI (e.g. send to a Java stream)
- flush to a file or a pipe from C code consumed by a Java thread (nice example here: http://stackoverflow.com/questions/23352592/redirecting-stdin-and-stdout-of-c-program-in-android)

(For information it seems more simple when running a process rather than using lib through JNI)

[SH: why?]