问题提出: 最近小组的小伙伴们都在写my_ls,myshell, 可能经常会遇到这样的问题, 需要得到当前路径下的文件名 比如当前绝对路径:/home/dela/dela_c, 现在想得到dela_c怎么办, 反正我在实现这个问题的时候费了一番功夫 现在跟小伙伴们分享一个很简单的方法, 就是:basename和dirname系统调用!!! 函数声明 头文件: #include<libgen.h> 函数声明: char *dirname(char *path); char * basename(char *path); 函数用法 basename(): 截取path中的去目录部分的最后的文件名 dirname(): 截取path中的目录路径名 成功将返回文件名或目录名, 失败返回NULL 程序示例: #include<stdio.h> #include<libgen.h> #include<unistd.h> #include<string.h> #in 继续阅读 >>


祝一迪 16/07/29 15:09:05
问题提出:为什么用nice系统调用降低进程优先级不成功 nice系统调用 nice函数声明:#include<unistd.h> int nice(int increment); nice系统调用包含getpriority和setpriority这两个函数 getpriority函数和setpriority函数 函数声明:#include<unistd.h> int getpriority(int which, int who); int setpriority(int which, int who, int prio); nice系统调用是它们的一种组合形式: int nice(int increment) { int oldpro = getpriority(PRIO_PROCESS, getpid()); return setpriority(PRIO_PROCESS, oldpro+increment); } 示例: #include<stdio.h> #include< 继续阅读 >>


祝一迪 16/07/26 17:46:45
1.命令参数及其说明 ls:显示当前目录下的所有文件(不含隐藏文件) ls -a:显示当前目录下的所有文件(含隐藏文件) ls -l:显示当前目录下的所有文件的详细信息 ls -R:显示当前目录下的文件及其子目录下的所有文件 2.实现过程中遇到的问题 1.无法根据文件名获取正确的文件信息 解决:获取文件信息的文件名应该是绝对路径,而非简单的文件名 2.在显示时间信息之后自动换行,导致文件名和时间信息无法在同一行输出 解决:buf_time[strlen(buf_time)] = '\0'; 3.输出存储权限的数组在输出时会出现乱码 解决:存储权限的数组在定义时没有初始化!!! 祝一迪呀! 什么时候才能把数组初始化这点记住!!! 4.无法得到正确的当前目录 解决:对getcwd的认识还不够,为此我做了测试,在此链接github上的源码,以便日后复习 getcwb的链接:getcwb_test.c 5.在实现ls -R的时候递归会进入死循环 解决:当ls -R的时候,第一个和第二个检索的目录就是.和..这两个目录,即当前目录和当前目录的上一 继续阅读 >>


祝一迪 16/07/23 15:46:54
1.atoi()函数 函数声明:int atoi(const char *nptr); 头文件:#include<stdlib.h> 函数说明:将字符串转换成整数. 例如:atoi("777"); 这个函数怎么这么好用呢!以前竟然不知道! 2.exit()和return的区别 exit(0):正常运行程序并退出程序 exit(1):非正常运行程序导致程序退出 return:返回函数,若在非主函数中,则会退出函数并返回一个值 return是关键字;exit()是一个函数 return是语言级别的,表示了调用堆栈的返回;exit是函数调用级别的,表示了一个进程的结束 3.linux下的捕获:errno和strerror的使用 经常在调用linux系统API(设备程序编程接口)时出现一些错误.比如open(),creat()之类的函数会返回-1,出现错误,调用失败.这时需要知道错误u的原因,就用到了errno这个全局变量(也有人说是宏定义). 头文件:#include<errno.h> 每次 继续阅读 >>


祝一迪 16/07/20 21:55:02