Linux基础——调用系统命令

在这里,我们根据输入的相应命令,调用系统的命令。若不是系统的命令,自动清空该命令,否则,根据系统命令执行。

实现代码如下:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <sys/types.h>
 4 #include <sys/wait.h>
 5 #include <unistd.h>
 6 #include <string.h>
 7 #define M '>'
 8 void word_search(char *line,char *word[1024]);
 9 int main(int argc,char *argv[])
10 {
11     char line[1024];
12     char *word[1024];
13     while(memset(line,0,1024),printf("%c",M),fgets(line,1024,stdin))
14     {    
15         if(line[0]=='\n')
16             continue;
17         line[strlen(line)-1]='\0';
18         memset(word,0,sizeof(word));
19         word_search(line,word);
20         if(word[0]==NULL)
21             continue;
22         if(fork() == 0)
23         {
24             execvp(word[0],word);
25             continue;
26         }
27         else
28             wait(NULL);
29     }
30     return 0;
31 }
32 void word_search(char *line,char *word[1024])
33 {
34     int cnt=0,bg=0,end;
35     while(line[bg] != '\0')
36     {
37         while(line[bg] == ' ' && line[bg]!='\0')
38             bg++;
39         if(line[bg]=='\0')
40             break;
41         end=bg;
42         while(line[end]!=' '&& line[end]!='\0')
43             end++;
44         word[cnt]=(char *)calloc(1,(end-bg+1));
45         strncpy(word[cnt],line+bg,end-bg);
46         cnt++;
47         bg=end;
48     }
49     word[cnt]=NULL;
50 }
View Code

在代码中,execvp函数会从PATH 环境变量所指的目录中查找符合参数file 的文件名,

找到后便执行该文件,然后将第二个参数argv传给该欲执行的文件。

posted @ 2014-10-07 13:53  (@_@)ゞ  阅读(569)  评论(0编辑  收藏  举报