用c语言实现自己的 sleep 命令
写在前面:
sleep是用于控制进程暂停的常用命令,本次我将使用系统调用函数,实现一个简单的sleep命令。
功能:
- 支持传入多个参数。
- 对于没有参数或这错误参数的情况,抛出错误。
基本思路:
- 对于没有参数的情况,我直接抛出错误。
- 在处理参数的时候,我这里封装在了一个Howtime()的函数内部,可以使得处理参数更加方便,而由于参数是字符串形式传入,所以需要转换为整数形式。
- 面对负数,非阿拉伯数字等其他字符的时候,我选择抛出错误。
- 最后把所有时间加和,sleep。
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <stdio.h>//fprintf() #include <unistd.h>//sleep() #include <stdlib.h>//exit()
int Howtime(char* string);
int main(int argc, char* argv[]) { int total_time = 0; if(argc == 1) { fprintf(stderr, "sleep: argument...\n"); exit(1); } for(int i = 1; i < argc; i++) { int tmp = Howtime(argv[i]); if(tmp < 0) { fprintf(stderr, "sleep:invalid time '%s'\n",argv[i]); }else { total_time += tmp; } } sleep(total_time); exit(0); }
int Howtime(char* string) { if(string[0] == '-' || string[0] == '\0') { return -1; } int time = 0; int i = 0; while(string[i] != '\0') { if(string[i] < '0' && string[i] > '9') { return -1; } time = time * 10 + (string[i] - '0'); i++; } return time; }
|