Code:
#include<qapplication.h>
#include<qthread.h>
#include<stdio.h>
#include<unistd.h>

int a=1, b,c=0;

class rdFrmEmacs : public QThread {

 public:
      virtual void run();
};
void
rdFrmEmacs::run()
{
 do
 { if (!c)
   {     scanf("%d %d\n",&a,&b); // from emacs
     c = a+b;
   }
 }while(a >= 0);
}
int main()
{    rdFrmEmacs t; t.start();
 do{
     if(c)
     {  printf("Summe aus Thread t %d\n",c);
        fflush(stdout);
        c=0;
     }
 }while(a >= 0);
 t.wait();
}
arbeite nur dann wie erwartet wenn die Eingaben
nichtnur mit Returntaste, sondern danach auch noch
mit ctl-D abgeschlossen werden.

Und eigentlich hätte ich auch noch die Ausgabe der
letzten Summe erwartet, die sich aus dem a < 0 ergibt.

Dieser Code
ist nur eine Vorübung für ein wesentlich größeres
Programm daß durch emacs-lisp als asynchroner
prozess gestartet wird.