現在、SolarisでC言語の簡単なアプリケーションを作成しています。
そこで、管理者以外の人に悪用されないようにという名目で、作ったプログラムを端末エミュレータで起動させ、それに標準入力からパスワードを入力させるようにしたいと考えています。
しかし、そのためには、入力したパスワードをターミナル上に表示されては困るので、ターミナルに入力された文字列を表示させないようにするにはどうしたらよいのでしょうか?
いろいろと調べたのですが、具体的な関数がよくわからなかったので、エコーバックをなくすような関数がありましたら、是非教えてただきたいと思います。
No.1
- 回答日時:
このソースを試してみてください。
ヒントになるでしょう。
Enterキー入力後にエコーバックします。
キーワードはsttyコマンドです。
----
#include <stdio.h>
main()
{
char bf[1000];
memset(bf, NULL, 1000);
printf("PASSWD:");
system("stty -echo >/dev/null 2>&1");
scanf("%s", bf);
system("stty echo >/dev/null 2>&1");
printf("\nエコーバック=>%s\n",bf);
}
この回答への補足
お答えありがとうございます!
しかし、system関数を使わずに、C言語の関数(ライブラリを含む)ですることはできるのでしょうか?
No.2
- 回答日時:
ioctlってシステムコール使えばやれると思いますよ。
Linuxではやったことありますが、多分Solaris(Unix)でも
いけたはず・・・
ioctlの使い方はmanでも見て下さい。
No.3ベストアンサー
- 回答日時:
結構、面倒です。
覚悟してください。入出力がファイルにリダイレクトされている場合の処置とか、途中でCtrl+Cを押された場合の始末とか、諸々を付け加えると100ステップを超えてしまうかもしれません。#include <termio.h>
struct termio tbuf;
char passowrd [100];
ioctl (0, TCGETA, &tbuf);
tbuf.c_lflag &= ~ECHO;
ioctl (0, TCSETA, &tbuf);
fputs ("password: ", stdout);
fgets (password, stdin);
tbuf.c_lflag |= ECHO;
ioctl (0,TCSETA, &tbuf);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Excel(エクセル) Excelのテーブルについて 6 2023/07/07 08:37
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Excelの関数について 3 2022/11/13 23:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
java初心者です。入力されたの...
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
プログラミングの問題です 「金...
-
cout関数を使っているのですが...
-
プログラミング初心者です。 Py...
-
"scanf"でエンターで改行させな...
-
Userformの入力順序をタブオー...
-
scanfが2回使えない・・・?;
-
ワードで文字を入力する時の変...
-
if文の条件にscanf関数を使うと…?
-
入力値が1以下、かつ数字以外の...
-
java 入力された文字列を数値に...
-
プログラム(C)
-
scanf関数について
-
WindowsでEOF
-
2進数の1の数を数える問題
-
Linuxで入力待ちなしkeyread関...
-
プログラムC言語の整数の約数に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報