とある人の疑問

gitのフックって sys.stdin をopen("/dev/tty") にしないとraw_input 出来ないのね…
この仕様なんなんだろ

ロシア語?のサイト
http://qaru.site/questions/433523/how-is-it-possible-to-use-rawinput-in-a-python-git-hook

2 ответов

において、gitコマンドのプロセス(21801)とpythonのプロセス(21802)がある。

21802に対してfd3が/dev/ttyに紐付いている。

あと、ロシア語は分からない。

https://stackoverflow.com/questions/16960857/how-to-differentiate-dev-tty-with-stdin-stdout-stderr?rq=1

When you call open you get a NEW file descriptor. 0, 1, 2 are already open when the process starts. So 3 is a newly created file descriptor. Use .fileno() on an existing file object to see the file descriptor number. – jim mcnamara Jun 6 '13 at 11:26

fdの0, 1, 2はすでに開いていて、3が新たに作られるfile descriptor。

21802に対してfd3が/dev/ttyに紐付いている。

ということで、sys.stdin=open('/dev/tty')をしないとダメな気がする。

link

ロシア人が参考にした英語サイト(Stackoverflow)もあった。上記ロシア語サイトからリンクされている。

https://stackoverflow.com/questions/7437261/how-is-it-possible-to-use-raw-input-in-a-python-git-hook/7437724#7437724

実はgoogle検索するとこちらのサイトが上位に出てきていた。最初からこちらを読めばよかったのか。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.