网站做虚假广告,网站设计的技巧,远憬建站,网站建设教程视频西瓜1.open函数 这个函数是打开一个文件#xff08;文件名叫pathname),以 flag 权限打开#xff0c;flag 包括了以下几种 O_RDONLY#xff08;只读#xff09;, O_WRONLY#xff08;只写#xff09;, O_RDWR#xff08;读写#xff09;#xff0c;当文件打开成…1.open函数 这个函数是打开一个文件文件名叫pathname),以 flag 权限打开flag 包括了以下几种 O_RDONLY只读, O_WRONLY只写, O_RDWR读写当文件打开成功时函数返回所要打开的文件名 当函数执行失败时函数返回 -1. 2.write函数 write函数是打开一个文件描述符为 fd 的文件并将该文件的内容写到 buf 中 同时期望写 count 个字节当函数执行成功时返回往 buf 中所写的字节数 失败时返回值为 -1 3.之前编写的自主shell进行修改使其支持输入/输出/追加重定向
#includestdio.h
#includefcntl.h
#includesys/wait.h
#includeunistd.h
#includestdlib.h
#includestring.hint main()
{char buf[1024] { 0 };while(1){printf(mysell#);fflush(stdout);size_t s read( 0, buf, sizeof( buf ) );if(s 0){buf[s - 1] \0;printf(%s\n, buf);}char* start buf;char* _argv[32];char* argnext[32];_argv[0] buf;int i 1;while(*start){if(*start ){*start \0;start ;_argv[i] start;}else{start ;}}_argv[i] NULL;pid_t pid;pid fork();if(pid 0){perror(fork);exit(1);}if(pid 0){int i 0;int fd 0;for(i 0; _argv[i] ! NULL; i){if(strcmp(_argv[i], ) 0){char* file_name _argv[i 1];_argv[i] NULL;close(1);fd open(file_name, O_CREAT | O_WRONLY, 0664);break;}}execvp(_argv[0], _argv);close(fd);}else if(pid 0){int st 0;waitpid(pid, NULL, 0);}}return 0;
} 上一次写了一个简单的shell 这次给其加上输入重定向 虽然加入了输出重定向但还没有加入输入重定向以及追加重定向以及感到在下一篇当中将会给其加入输入重定向 追加重定向以及管道。