teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

「試したこと」を追記

2020/03/15 19:28

投稿

ta1g3n
ta1g3n

スコア35

title CHANGED
File without changes
body CHANGED
@@ -96,9 +96,10 @@
96
96
  + break;
97
97
  + }
98
98
  + }
99
+ + println!("reading..."); // readが処理をブロックしているか確認
99
100
  + }
100
101
  ```
101
- この場合も同様に処理がブロックされました。
102
+ この場合も同様に処理がブロックされました。("reading..."という出力が一つも確認できませんでした。)
102
103
 
103
104
  ### 補足情報
104
105
  OS: Arch Linux (カーネルバージョン5.5.8)

2

「試したこと」を編集

2020/03/15 19:28

投稿

ta1g3n
ta1g3n

スコア35

title CHANGED
File without changes
body CHANGED
@@ -86,11 +86,11 @@
86
86
  hoshi-takanoriさんのご指摘を受け、読み取り部を以下のように変更しました。
87
87
  ```Diff
88
88
  - out.read_to_string(&mut res).unwrap();
89
- + let mut buf = [0; 1024];
89
+ + let mut buf = [0; 4];
90
90
  + while let Ok(s) = out.read(&mut buf) {
91
91
  + match s {
92
92
  + 0 => break,
93
- + 1024 => res.append(&mut buf.to_vec()),
93
+ + 4 => res.append(&mut buf.to_vec()),
94
94
  + _ => {
95
95
  + res.append(&mut buf.to_vec());
96
96
  + break;

1

「試したこと」を追記

2020/03/15 19:22

投稿

ta1g3n
ta1g3n

スコア35

title CHANGED
File without changes
body CHANGED
@@ -82,6 +82,24 @@
82
82
  cmd.stdinへの入力に対する出力を受け取るにはどうすればいいのでしょうか?
83
83
  プロセス間通信の心得がある方、ご教授いただけると幸いです。
84
84
 
85
+ ### 試したこと
86
+ hoshi-takanoriさんのご指摘を受け、読み取り部を以下のように変更しました。
87
+ ```Diff
88
+ - out.read_to_string(&mut res).unwrap();
89
+ + let mut buf = [0; 1024];
90
+ + while let Ok(s) = out.read(&mut buf) {
91
+ + match s {
92
+ + 0 => break,
93
+ + 1024 => res.append(&mut buf.to_vec()),
94
+ + _ => {
95
+ + res.append(&mut buf.to_vec());
96
+ + break;
97
+ + }
98
+ + }
99
+ + }
100
+ ```
101
+ この場合も同様に処理がブロックされました。
102
+
85
103
  ### 補足情報
86
104
  OS: Arch Linux (カーネルバージョン5.5.8)
87
105
  Rustバージョン: 1.43.0-nightly