You want the process that sends the data to run in the background, but this problem occurs when you start the process.
In general, this problem may be related to the following reasons:
"[1] + Stopped (TTY input)" means that the program tries to read from the control terminal, but is stopped by the sigttin signal because it is running in the background:
The man signal has the following output:
Sigttin Stop process Background read attempted from Control terminal
The following program demonstrates this scenario:
void Sig_ttin (int signum) {(void) printf ("%s:sigttin CAUGHT.N", __func__); Signal (Sigttin, SIG_DFL);} int main (void) {int n; Signal (Sigttin, sig_ttin); scanf ("%d", &n); return 0;}
But I guess it is because the process is to read data from the serial port, and this serial port is connected to the debug terminal, so this process and the terminal (TTY) associated with, belong to the foreground process group.
Because the test found that even when sending characters to stdout, the process can be placed in the background, as long as the serial port is not opened.
Related stuff:
LINUX/QNX Command:jobs, FG, nohup
[LINUX/QNX] encountered a problem Stopped (TTY input)