tkomatsu / minishell

my own shell like bash
MIT License
3 stars 0 forks source link

Ctrl+\の挙動 #86

Closed tkomatsu closed 3 years ago

tkomatsu commented 3 years ago

@kefujiwa

bash-3.2$ pwd <-Ctrl+\の後にenter
/Users/tkomatsu/Documents/42/minishell
bash-3.2$

この挙動が再現できないらしいという話が他のチームのレビューとかで上がっているのですが、再現できるのではというアイデアを見つけました。シグナルの実装はお任せしてしまっているので、見当違いだったら指摘してください。

https://github.com/tkomatsu/minishell/blob/a348e7a3fafe378ec72aa5255bb0be4bd8814888/srcs/utils/signal_handler.c#L31-L45 Ctrl+\が押されるとこの関数が実行されます。この時にget_next_input()を呼び出せばstatic変数にそれまで記入済みのものが保存されそうです。 その際get_next_input()でオプションもしくはシグナルで反応して、static char *str[STATIC_MAX]からchar **lineに保存しないように修正する必要は出てきますが。

tkomatsu commented 3 years ago

試してみたけど、うまくいかないですね 😢

tkomatsu commented 3 years ago

シグナルが呼ばれた時点でコアダンプに吐き出されてしまうから追うことはできないってことですかね? このシグナルのデフォルトの処理が「終了+コアダンプ」ってだけならやっぱりいけそうな気がするんだけどなあ

tkomatsu commented 3 years ago

シグナルの理解があまりできていないのですが、シグナルハンドラが実行された場合それまでの処理は止まりメインループに戻ると思っているのですが、合ってますか? シグナルが出た時点の処理から再開されるのですね。

tkomatsu commented 3 years ago

https://teratail.com/questions/290080 iwasaさんにたどり着いた笑

tkomatsu commented 3 years ago

解決できないことがわかったので閉じます。