回答編集履歴

2

system の代わりに fork/execvp を使うコードを追加

2020/11/25 04:12

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -157,3 +157,49 @@
157
157
  CAL (Ctrl-D)
158
158
 
159
159
  ```
160
+
161
+ **追記**
162
+
163
+ system ではなく、fork と execvp で書いてみました。
164
+
165
+ ```C
166
+
167
+ #include <stdio.h> // fgets, printf
168
+
169
+ #include <string.h> // strtok
170
+
171
+ #include <unistd.h> // execvp, fork
172
+
173
+ #include <wait.h> // wait
174
+
175
+
176
+
177
+ int main(void)
178
+
179
+ {
180
+
181
+ char line[128], *argv[32] = { "/usr/bin/cal" };
182
+
183
+ printf("cal ");
184
+
185
+ while (fgets(line, sizeof line, stdin)) {
186
+
187
+ int i = 1;
188
+
189
+ argv[i] = strtok(line, " \t\n");
190
+
191
+ while (i < 31 && argv[i]) argv[++i] = strtok(NULL, " \t\n");
192
+
193
+ if (fork() == 0) execvp(argv[0], argv);
194
+
195
+ wait(NULL);
196
+
197
+ printf("CAL ");
198
+
199
+ }
200
+
201
+ return 0;
202
+
203
+ }
204
+
205
+ ```

1

誤字修正(exex -> exec)

2020/11/25 04:12

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- exex の代わりに system ではダメなんですか?
7
+ exec の代わりに system ではダメなんですか?
8
8
 
9
9
  ```C
10
10