ページ 11

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

Posted: 2015年7月31日(金) 20:01
by いーげんも
こんにちは、プログラミングを学んでいる大学生です。

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

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

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

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

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

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

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

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

Posted: 2015年8月02日(日) 02:30
by かずま
いーげんも さんが書きました:しかしプロンプト部に文字を表示して、あたかもキーボードからコマンドを入力したような状態にするにはどうすればいいのか
分からず、困っています。
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;
}
プロンプトの後の文字を追加したり、削除したりできるでしょう。