質問編集履歴

2

修正後のコード追加

2017/11/18 19:15

投稿

ijuya_yika
ijuya_yika

スコア50

test CHANGED
File without changes
test CHANGED
@@ -99,3 +99,87 @@
99
99
  }
100
100
 
101
101
  ```
102
+
103
+
104
+
105
+ ###execvpに変更後のソースコード
106
+
107
+ ```C
108
+
109
+ #include <stdio.h>
110
+
111
+ #include <unistd.h>
112
+
113
+ #include <string.h>
114
+
115
+ #include <sys/wait.h>
116
+
117
+ #define S 1000
118
+
119
+
120
+
121
+ int main(int argc, char *argv[]){
122
+
123
+ char* token[S];
124
+
125
+ char usrin[S];
126
+
127
+ int pid, status, count;
128
+
129
+
130
+
131
+
132
+
133
+ printf(">>");
134
+
135
+ fgets(usrin, sizeof(usrin), stdin);
136
+
137
+ usrin[strlen(usrin)-1] = '\0';
138
+
139
+
140
+
141
+
142
+
143
+ token[0] = strtok(usrin, " ");
144
+
145
+ for(count=1; count<S; ++count){
146
+
147
+ token[count] = strtok(NULL, " ");
148
+
149
+ if(token[count]==NULL)
150
+
151
+ break;
152
+
153
+ }
154
+
155
+
156
+
157
+
158
+
159
+ pid = fork();
160
+
161
+
162
+
163
+ if(pid==0){ /* token[0] => ls, token[1] => NULL */
164
+
165
+ execvp(token[0], token);
166
+
167
+ }
168
+
169
+ else {
170
+
171
+ wait(&status);
172
+
173
+
174
+
175
+ }
176
+
177
+
178
+
179
+ return 0;
180
+
181
+ }
182
+
183
+
184
+
185
+ ```

1

質問訂正

2017/11/18 19:15

投稿

ijuya_yika
ijuya_yika

スコア50

test CHANGED
File without changes
test CHANGED
@@ -78,6 +78,8 @@
78
78
 
79
79
  if(pid==0){
80
80
 
81
+ /* この時点で入力がlsの場合 token[0]="/usr/bin/ls" token[1]=NULLを確認済 */
82
+
81
83
  execv(token[0], token);
82
84
 
83
85
  }