标签:lin env 就是 exec lse 指定 状态 相关 lag
while(1)
{
输出用户信息
读取用户输入命令存入数组和文件
调用fork()函数,若返回值不为0,则调用wait()
若返回值为0,调用exec()
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pwd.h>
#include <sys/wait.h>
#define N 100
#define order_length 128
#define order_num 64
#define empty 0
#define chars 1
void main()
{
while(1) {
struct passwd *my_info;
char path[N];
my_info = getpwuid(getuid());
getcwd(path, sizeof(path));
printf("[%s@%s]$ ", my_info->pw_name, path);//输出用户及路径
char str[N];
char a[N];
char *argv[N]={NULL};
char *envp[]={0,NULL};
int i,j = 0, flag=1;
fgets(str,N,stdin); //读取输入的命令
str[N - 1] = ‘\0‘;
if(feof(stdin))
{
printf("error");
exit(0);
}
for(i=0;str[i]!=‘\0‘&&i<N&&j<N;i++) {
if(str[i] == ‘ ‘ || str[i] == ‘\n‘) {
flag=1;
str[i] = ‘\0‘;
}
else if(flag==1) {
argv[j++] = &str[i];
flag=0;
}
}
if(fork() != 0) wait(NULL); //调用fork()
else {
execvp(argv[0], argv);
perror("execlp error");
exit(0);
}
}
}
测试了ls
,ls -l``tree``clear
指令,测试截图如下:
尚有一部分命令无法实现,例如“cd”等等……
标签:lin env 就是 exec lse 指定 状态 相关 lag
原文地址:https://www.cnblogs.com/wangyaojia/p/10017369.html