プロンプト部にあらかじめ文字を表示させたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
いーげんも

プロンプト部にあらかじめ文字を表示させたい

#1

投稿記事 by いーげんも » 10年前

こんにちは、プログラミングを学んでいる大学生です。

いま私はlinux上で動く簡易版のシェルをC言語で作っています。

現在ヒストリ機能の実装をしており、↑や↓などのカーソルキーを押すと

今までに実行したコマンドが順にプロンプト部に表示されるような仕様にしたいと思っています。

しかしプロンプト部に文字を表示して、あたかもキーボードからコマンドを入力したような状態にするにはどうすればいいのか

分からず、困っています。

ネットや書籍で調べてみたのですが載っておらず八方塞がりの状態です。

どなたか教えていただけないでしょうか。

かずま

Re: プロンプト部にあらかじめ文字を表示させたい

#2

投稿記事 by かずま » 10年前

いーげんも さんが書きました:しかしプロンプト部に文字を表示して、あたかもキーボードからコマンドを入力したような状態にするにはどうすればいいのか
分からず、困っています。
ioctl の TIOCSTI を使えばよいのでは?

コード:

#include <stdio.h>
#include <sys/ioctl.h>

int main(void)
{
    while (1) {
        char buf[1024], *s = "echo abc";
        printf(">> "); fflush(stdout);
        while (*s) ioctl(0, TIOCSTI, s++);
        fgets(buf, sizeof buf, stdin);
        printf("input: %s", buf);
    }   
    return 0;
}
プロンプトの後の文字を追加したり、削除したりできるでしょう。

閉鎖

“C言語何でも質問掲示板” へ戻る