私は現在、ユーザーがtelnetを使用してリモートマシンのbashシェルにアクセスできるアプリケーションを作成しています。アプリケーションは、リモートマシン上で動作するTelnetサーバーです。私はそうのように生成されたbashのプロセスにtelnetのストリームからの出力をパイプしています:私はあなたが通常のシェルで行うことができますほとんどすべてを行うことができる午前stdinからSIGINTを送信
char *execArgs[] = {"/bin/bash", "-i", 0};
execv(execArgs[0], execArgs);
。 CTRL + Cでタスクを強制終了する際に問題が発生しています。私がtelnetの終わりからCTRL + Cシーケンスを受け取ると、それは[0xFF] [0xF8]として来ます。 FFは、(それがコマンドを解釈することができます)IACモードにTelnetを入れ、F8は(0×03)ETXを送信するために私のプログラムに指示します:outfdはbashのプロセスに流れている
char tmpchar = 3;
retval = write(outfd[1], &tmpchar, 1);
fflush(fstdin);
。しかし、私は0x03
がSIGINTシグナルとして解釈されているとは思っていません。少なくとも、現在実行中のタスクを殺しているわけではありません。これはなぜでしょうか?
'^ C 'ではなく、' SIGINT'を送るべきです!あなたは 'bash'やパイプに話すためにptyを使っていますか? –
私はパイプを使用しています – crocboy