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

質問編集履歴

2

修正後のコード追加

2017/11/18 19:15

投稿

ijuya_yika
ijuya_yika

スコア50

title CHANGED
File without changes
body CHANGED
@@ -48,4 +48,46 @@
48
48
 
49
49
  return 0;
50
50
  }
51
+ ```
52
+
53
+ ###execvpに変更後のソースコード
54
+ ```C
55
+ #include <stdio.h>
56
+ #include <unistd.h>
57
+ #include <string.h>
58
+ #include <sys/wait.h>
59
+ #define S 1000
60
+
61
+ int main(int argc, char *argv[]){
62
+ char* token[S];
63
+ char usrin[S];
64
+ int pid, status, count;
65
+
66
+
67
+ printf(">>");
68
+ fgets(usrin, sizeof(usrin), stdin);
69
+ usrin[strlen(usrin)-1] = '\0';
70
+
71
+
72
+ token[0] = strtok(usrin, " ");
73
+ for(count=1; count<S; ++count){
74
+ token[count] = strtok(NULL, " ");
75
+ if(token[count]==NULL)
76
+ break;
77
+ }
78
+
79
+
80
+ pid = fork();
81
+
82
+ if(pid==0){ /* token[0] => ls, token[1] => NULL */
83
+ execvp(token[0], token);
84
+ }
85
+ else {
86
+ wait(&status);
87
+
88
+ }
89
+
90
+ return 0;
91
+ }
92
+
51
93
  ```

1

質問訂正

2017/11/18 19:15

投稿

ijuya_yika
ijuya_yika

スコア50

title CHANGED
File without changes
body CHANGED
@@ -38,6 +38,7 @@
38
38
  pid = fork();
39
39
 
40
40
  if(pid==0){
41
+ /* この時点で入力がlsの場合 token[0]="/usr/bin/ls" token[1]=NULLを確認済 */
41
42
  execv(token[0], token);
42
43
  }
43
44
  else {