3

さて、私は問題があります。を使用してプログラムの出力を取得し、出力をexeclpファイルに直接送信する必要があります。問題は、プログラムがttyで実行されている場合にのみ特定の情報を出力することです(私はそれが呼び出すと思いますisatty(3))。これがこれまでの私のコードです

void main(){
    int fd = open("file", O_WRONLY | O_CREAT | O_TRUNC, 0755);
    close(1);
    dup(fd);
    execlp("program","program",NULL);
    close(fd);
}

(動作する)などのOSコマンドは使いたくありませんscript

だから問題は、どうすればプログラムを「だまして」、ttyに書き込んでいると思い込ませることができるかということです。

4

1 に答える 1

6

出力として「pty」(疑似端末) を使用します。詳細については、この質問を参照してください。

Rachid Koucha は、pty の使用方法の詳細を説明する長い記事を書きました: Using pseudo-terminals (pty) to control interactive programs

読むのをやめる このテキストは、愚かな SO アルゴリズムが私の答えをコメントに変えるのを止めるために存在します。ソフトウェアが自分より賢くなるのは嫌いです :-(

于 2012-11-12T14:47:34.337 に答える