在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识。
用过shell命令的都是知道,shell命令有很多,比如去一个目录中文件名的列表是用ls,新建一个文件夹用mkdir等。其实,我们用的shell命令“ls”、“-c”就是shell这个程序的参数,下面我们通过编程来实现shell中的ls命令并将结果写到temp.txt文件中。
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/wait.h> #define MAX 1024 int system(const char * cmdstring); int main(void) { int fd , n; char buf[MAX]; //保存文件内容的缓冲区 if(system("ls > temp.txt") == -1){ //使用system执行ls命令,并将结果输出到temp.txt文件中 perror("fail to exec command"); exit(1); } if((fd = open("temp.txt",O_RDWR)) == -1){//打开temp.txt文件 perror("fail to open"); exit(1); } printf("%d ",fd); if((n = read(fd, buf ,MAX)) == -1){ //读文件内容 perror("fail to read"); exit(1); } buf[n] = '