学校で使用する簡単なアプリを作成する必要があります。
端末に1行に1つの引数を作成し、stdoutからユーザー選択を返す必要があります。
cat my_app main.c main.h
たとえば、ユーザーが選択した場合はcatに戻るとmain.c
書き込みますmain.c
。問題は、stdout(別名STDOUT_FILENO)にメニューを作成すると返されることですcat
。 STDERRにメニューを書くことはできますが、少し見苦しいです。
/dev/tty*
私は、または同じデバイス/ファイルを使用する方法がわかりませんが、/dev/pty*
STDOUTまたはSTDERRに書き込む必要なく、端末に何かを書き込むために使用できるようです。
デフォルトでは、端末(STDOUT、STDERR、MYOUT)に表示される新しい出力を開きたいです。
私が正しく説明したかどうかわかりません。
答え1
対話型アプリケーションを構築するには、/dev/tty
制御端末にファイル記述子を返すを開くことができます。
int ttyfd = open("/dev/tty", O_RDWR);
STDIN_FILENO
orの代わりにこれを使用できますSTDOUT_FILENO
(プログラムが起動すると、端末以外の場所にリダイレクトされる可能性があります)。
ここにいくつかの例があります。
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main() {
int ttyfd = open("/dev/tty", O_RDWR);
printf("fd: %d\n", ttyfd);
write(ttyfd, "hello tty!\n", 11);
return 0;
}
呼び出されると、./test >out
端末にこんにちはメッセージとファイルfd: 3
の同様の内容を印刷する必要がありますout
。