怎么做学校网站,网站的建设流程图,游戏推广一个月能拿多少钱,问答社交网站开发linux中exec*为加载器#xff0c;可以将程序加载到内存。
main()函数也是函数#xff0c;也要被调用#xff0c;也要被传参
故在一个程序中exec*系列的函数先被执行
程序替换中execve是系统调用#xff0c;其他的都是封装。 进程程序替换
1.创建子进程的目的#xff1… linux中exec*为加载器可以将程序加载到内存。
main()函数也是函数也要被调用也要被传参
故在一个程序中exec*系列的函数先被执行
程序替换中execve是系统调用其他的都是封装。 进程程序替换
1.创建子进程的目的
a.想让子进程执行父进程代码的一部分
b.想让子进程执行一个全新的程序
一个简单的命令行解释器
#includestdio.h
#includestring.h
#includestdlib.h
#includeunistd.h
#includesys/types.h
#includesys/wait.h
#includeassert.h#define NUM 1024
char lineCommand[NUM];
#define OPT_NUM 64
char* myargv[OPT_NUM];int main()
{while(1){printf(用户名主机名 当前路径#);fflush(stdout);char* sfgets(lineCommand,sizeof(lineCommand)-1,stdin);assert(s!NULL);(void)s;lineCommand[strlen(lineCommand)-1]0;//printf(test:%s\n,lineCommand);//字符串切割myargv[0]strtok(lineCommand, );int i1;while(myargv[i]strtok(NULL, ));
#ifdef DEBUGfor(int i0;myargv[i];i){printf(myargv[%d]:%s\n,i,myargv[i]);}
#endif//执行命令pid_t idfork();assert(id!-1);if(id0){execvp(myargv[0],myargv);}waitpid(id,NULL,0);}return 0;
}4.撤销与恢复 撤销语法:u //键盘输入符号:和字母u再回车(属于末行模式)撤销上一步操作 恢复语法ctrlr //键盘ctrlr恢复撤销操作(即取消之前的撤销操作)
Linux(CENTOS)操作系统_centos cp-CSDN博客文章浏览阅读1k次点赞23次收藏8次。学习Linux做的笔记分享一些_centos cphttps://blog.csdn.net/2301_79693363/article/details/137720252基础指令 vim中批量化注释
ctrfvIesc
1,对文件操作的本质进程对文件的操作
2.一个文件要被访问就必须先被打开。
一个文件被形成的时候有默认文件掩码普通文件以666作为起始权限666~umask可以的到最终权限。
目录默认777 普通文件默认666
#includestdio.h
#includeunistd.h
#includestring.h#define FILE_NAME log.txtint main()
{//r,w,r(对文件进行读写操作不存在则报错),w(读写不存在则创建),a(append,追加),a()//FILE* fpfopen(FILE_NAME,a);//if(fpNULL)//{// perror(fopen);// return 1;//}//////int cnt 5;//while(cnt)//{// fprintf(fp,%s:%d\n,hello file,cnt--);//}//fclose(fp);return 0;
}对文件进行一些基础操作。
O_WRONLY|对文件进行写入
O_CREAT,0666 控制文件的权限
|O_TRUNC 每次以写的形式打开文件文件对自动清空
O_APPEND 追加
文件操作的本质进程和被打开文件的关系。
一个进程可以打开多个文件系统中存在大量被打开的文件被打开的文件会被OS管理起来
管理的形式为先描述在组织操作系统为了管理对应的打开文件会为文件创建对应的内核数据结构标识文件struct_file{}中包含了文件的大部分属性。
三个标准输入输出流
stdin:-键盘
stdout:-显示器
stderr:-显示器
./myfile
stdin-fd: 0
stdout-fd: 1
stderr-fd: 2
fd:3stdin:-键盘
stdout:-显示器
stderr:-显示器 默认占用文件描述符的0,1,2其他文件从3开始
FILE* fpfopen();
FILE是一个结构体结构体中必有一个字段-文件描述符。
进程的文件描述符表
struct file* fd array[]
进程文件描述符表。 文件描述符的本质是数组下标。
#includestdio.h
#includeunistd.h
#includestring.h
#includesys/types.h
#includesys/stat.h
#includefcntl.h
#includeassert.h#define FILE_NAME(number)log.txt#numberint main()
{printf(stdin-fd: %d\n,stdin-_fileno);printf(stdout-fd: %d\n,stdout-_fileno); printf(stderr-fd: %d\n,stderr-_fileno);umask(0);int fd0 open(FILE_NAME(1),O_WRONLY|O_CREAT|O_APPEND,0666);//int fdopen(FILE_NAME,O_WRONLY|O_CREAT|O_TRUNC,0666);//if(fd0)//{// perror(open);// return 1;//}printf(fd:%d\n,fd0);close(fd0);//r,w,r(对文件进行读写操作不存在则报错),w(读写不存在则创建),a(append,追加),a()//FILE* fpfopen(FILE_NAME,a);//if(fpNULL)//{// perror(fopen);// return 1;//}//////int cnt 5;//while(cnt)//{// fprintf(fp,%s:%d\n,hello file,cnt--);//}//fclose(fp);return 0;
}