操作系统发展的过程中保证系统稳定性和安全性的?种机制
Linux 操作系统中只是采?了其中的 0 和 3 两个级别,分别对应内核态和?户态。
从用户态到内核态
1、外部中断(硬件中断)
用户态进程执行时,硬件中断信号到来,进入内核态,执行中断服务程序
2、内部中断(陷入)
用户态进程执行时,调用了一个系统调用,陷入了内核态
查看39号系统调用,为:mkdir
通过 man 手册对 mkdir 指令进行查看
1 #include <sys/stat.h> 2 #include <sys/types.h> 3 4 int mkdir(const char *pathname, mode_t mode); 5 6 #include <fcntl.h> /* Definition of AT_* constants */ 7 #include <sys/stat.h> 8 9 int mkdirat(int dirfd, const char *pathname, mode_t mode); 10 11 glibc的功能测试宏要求(请参阅feature_test_macros(7)): 12 13 mkdirat(): 14 Since glibc 2.10: 15 _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L 16 Before glibc 2.10: 17 _ATFILE_SOURCE
描述:
mkdir()尝试创建一个名为pathname的目录。
参数mode指定新目录的mode(参见stat(2))。它按照通常的方式被进程的umask修改:在没有默认ACL的情况下,创建目录的模式是(mode&umask&0777)。其他模式位是否符合创建的目录取决于操作系统。对于Linux,请参阅下面的注释。
新创建的目录将由进程的有效用户标识拥有。如果包含该文件的目录设置了set-group-ID位,或者文件系统是使用BSD组语义(mount -o bsdgroups或者同义地mount -o grpid)装载的,则新目录将继承其父目录的组ID; 否则它将被该进程的有效组ID所拥有。
如果父目录设置了set-group-ID位,那么新创建的目录也是如此。
返回值:
mkdir()和mkdirat()在成功时返回0,如果发生错误,则返回-1(在这种情况下,适当地设置errno)
编写代码
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <string.h> 5 #include <fcntl.h> 6 #include <sys/stat.h> 7 8 int main(int argc,char *argv[]) 9 { 10 if(argc != 2) 11 { 12 printf("mkdir:argc error\n"); 13 exit(0); 14 } 15 16 if(mkdir(argv[1],O_CREAT|0600) == -1) 17 { 18 perror("mkdir error"); 19 } 20 21 exit(0); 22 }
原文:https://www.cnblogs.com/fxyi/p/12975310.html