バックグラウンドでプログラムをそのまま実行する必要があります。問題は、プログラムが tcsetattr() 呼び出しを実行し、raw モードを次のように設定することです。
struct termios tio;
if (tcgetattr(fileno(stdin), &tio) == -1) {
perror("tcgetattr");
return;
}
_saved_tio = tio;
tio.c_iflag |= IGNPAR;
tio.c_iflag &= ~(ISTRIP | INLCR | IGNCR | ICRNL | IXON | IXANY | IXOFF);
tio.c_lflag &= ~(ISIG | ICANON | ECHO | ECHOE | ECHOK | ECHONL);
// #ifdef IEXTEN
tio.c_lflag &= ~IEXTEN;
// #endif
tio.c_oflag &= ~OPOST;
tio.c_cc[VMIN] = 1;
tio.c_cc[VTIME] = 0;
if (tcsetattr(fileno(stdin), TCSADRAIN, &tio) == -1)
perror("tcsetattr");
else
_in_raw_mode = 1;
これは、「&」を使用してプログラムを実行し、Enter キーを押すとすぐに、プロセスが「停止」と表示されることを意味します。ps aux の出力でも、プロセスの状態として「T」が表示されます。これは、実行されていないことを意味します。このプログラムをバックグラウンドで実行するにはどうすればよいですか。問題は、このプログラムを変更できないことです。
完全な詳細については、実際にはバックグラウンド プロセスとして「sol」で ipmitool を使用する必要があります。
どんな助けでも大歓迎です! ありがとう