c语言sigset函数作用,Linux C函数小总结

http://hi.baidu.com/mathspace/blog/item/3049ebd3b6edf4d8a8ec9a3e.html

一、日期时间

1、char *asctime(const struct tm *timeptr)

将timeptr所指的tm结构中的信息转换为真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回

2、char *ctime(const time_t *timep)

将timep所指的time_t结构中的信息转换为真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回

3、int gettimeofday(struct timeval *tv, struct timezone *tz)

将当前的时间由tv所指的结构返回

4、time_t mktime(struct tm *timeptr)

将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0秒算到今天所经过的秒数

5、struct tm *localtime(const time_t *timep)

将timep所指的time_t结构中的信息转换为真实世界所使用的时间日期表示方法,然后将结果由结构tm返回

6、time_t time(time_t *t)

取得当前时间,返回从公元1970年1月1日0时0分0秒算到当前时间所经过的秒数

二、文件操作

1、int close(int fd)

关闭文件。参数fd为先前open()或creat()所返回的文件描述词

2、int open(const char *pathname, int flags, mode_t mode)

打开文件

3、int creat(const char *pathname, mode_t mode)

建立文件

4、int flock(int fd, int operation)

将operation所指定的方式对参数fd所指的文件做各种锁定或者解除锁定的动作

5、size_t read(int fd, void *buf, size_t count)

将fd所指的文件传送count个字节到buf指针所指的内存中

6、size_t write(int fd, const void *buf, size_t count)

将buf指针所指的内存写入count个字节到fd所指的文件

三、字符串转换

1、double atof(const char *ptr)

将字符串ptr转换成double型数

2、int atof(const char *ptr)

将字符串ptr转换成int型数

3、long atof(const char *ptr)

将字符串ptr转换成long型数

4、char toupper(char c)

如果参数c为小写字母则将对应大写字母返回

5、char tolower(char c)

如果参数c为大写字母则将对应小写字母返回

6、double strtod(const char *ptr, char **endptr)

将字符串ptr转换成double型

7、long strtol(const char *ptr, char **endptr, int base)

将字符串ptr根据参数base所采取的进制方式来转换成long型

8、unsigned long strtoul(const char *ptr, char **endptr, int base)

将字符串ptr根据参数base所采取的进制方式来转换成无符号的long型

四、环境变量

1、char *getenv(char *name)

获取环境变量name的内容

2、int putenv(const char *string)

改变或者增加环境变量的内容,参数string的格式为 "name=value"

3、int setenv(const char *name,const char *value,int overwrite)

改变或者增加环境变量name的内容

4、int unsetenv(const char *name)

取消设置环境变量name

五、进程操作

1、int system(const char *string)

执行参数string字符串所代表的命令

2、int execl(const char *path, const *arg, ...)

执行参数path字符串所代表的文件路径

3、int atexit(void (*function)(void))

设置程序正常结束前调用的

函数为function()

4、void exit(int status)

结束当前进程,并且将参数status返回给父进程

5、int printf(const char *format, ...)

格式化输出数据

6、int scanf(const char *format, ...)

格式化输入数据

7、int sprintf(char *str, char *format, ...)

格式化输出数据,并将结构复制到参数str所指的字符串数组

8、int sscanf(char *str, char *format, ...)

将参数str的字符串根据参数format字符串来转换并且格式化数据

9、pid_t wait(int *status)

暂停目前进行的执行,直到有信号到来或子进程结束

六、信号处理

1、unsigned int sleep(unsigned int seconds)

当前进程暂停,直到参数seconds所指定的时间,或者被信号所中断

2、int pause(void)

当前进程暂停(进入睡眠状态),直到被信号所中断

3、int ferror(FILE *stream)

检查参数stream所指定的文件流是否发生错误

4、unsigned int alarm(unsigned int seconds)

设置信号SIGALRM在经过参数seconds指定的秒数后传递给目前的进程

5、int pclose(FILE *stream)

关闭由popen所建立的管道及文件指针

6、FILE *popen(const char *command,const char *type)

建立管道连接到字进程的标准输出设备或者标准输入设备

7、void (*signal(int signum,void(* handler)(int)))(int)

依参数signum指定的信号编号来设置该信号的处理函数

8、int sigaddset(sigset_t *set, int signum)

将参数signum代表的信号加入到参数set的信号集里

9、int sigdelset(sigset_t *set, int signum)

将参数signum代表的信号从参数set的信号集里删除

10、int sigemptyset(sigset_t *set)

将参数set的信号集初始化并清空

11、int sigfillset(sigset_t *set)

将参数set的信号集初始化,然后把所有的信号加入到此信号集里

12、int sigismember(const sigset_t *set, int signum)

测试参数signum代表的信号是否已经加入到参数set的信号集里

13、char *strerror(int errnum)

根据错误

代码errnum来返回错误原因的描述字符串

七、内存控制

1、void *malloc(size_t size)

配置大小为size的内存空间

2、void *calloc(size_t nmemb, size_t size)

配置nmemb个相临的内存单位,每一个单位大小为size的内存空间

3、void free(void *ptr)

释放原先配置的内存

八、文件内容

1、FILE *fopen(const char *path, const char *mode)

以mode方式打开文件

2、int fclose(FILE *stream)

关闭先前fopen()打开的文件

3、int fputc(char c, FILE *stream)

将字符c写入参数stream指定的文件中

4、int fputs(const char *s, FILE *stream)

将参数s所指的字符串写入参数stream指定的文件中

5、int fgetc(FILE *stream)

从参数stream所指的文件中读取一个字符

6、int fgets(const char *s, int size, FILE *stream)

从参数stream所指的文件中读取指定个字符,保存到参数s所指的字符串中

7、int fileno(FILE *stream)

返回文件流stream所指文件的描叙词

8、size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

从文件流中读取数据存放到ptr所指向的数据空间

9、int fflush(FILE *stream)

将缓冲区内的数据写回参数stream指定的文件中

10、FILE *freopen(const char *path, const char *mode, FILE *stream)

将原stream所打开的文件流关闭,然后打开参数path的文件

九、内存及字符串

1、char *strcat(char *dest, const char *src)

将参数src字符串拷贝到参数dest所指的字符串尾

2、char *strncat(char *dest, const char *src, size_t n)

将参数src字符串拷贝n个字符到参数dest所指的字符串尾

3、int strcmp(const char *s1, const char *s2)

比较参数s1和s2字符串

4、int strcasecmp(const char *s1, const char *s2)

比较参数s1和s2字符串,忽略大小写的差异

5、int strncasecmp(const char *s1, const char *s2, size_t n)

比较参数s1和s2字符串的前n个字符,忽略大小写的差异

6、size_t strlen(const char *s)

返回字符串s的长度

7、char *strcpy(char *dest, const char *src)

将参数src字符串拷贝到参数dest所指的地址

8、char *strncpy(char *dest, const char *src, size_t n)

将参数src字符串拷贝n个字符到参数dest所指的字符串尾

9、char *strchr(const char *s, char c)

查找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回

10、char *strrchr(const char *s, char c)

查找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回

11、char *strstr(const char *string, const char *substring)

从字符串string中搜寻字符串substring,并将第一次出现的地址返回

12、char *strtok(char *s, const char *delim)

分割字符串成一个个片段

13、char *strdup(const char *s)

复制字符串

14、char *index(const char *s,char c)

查找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回

15、char *rindex(const char *s,char c)

查找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回

16、void *memcpy(void *dest, const void *src, size_t n)

拷贝src所指的内存内容前n个字节到dest所指的内存地址上

17、void *memset(void *s, char c, size_t n)

将参数s所指的内存区域前n个字节以参数c填入,然后返回指向s的指针

18、int memcmp(const void *s1, const void *s2, size_t n)

比较参数s1和s2所指内存区间的前n个字符

19、int bcmp(const void *s1, const void *s2, int n)

比较s1和s2所指的内存区间的前n个字节

20、void bcopy(const void *src, void *dest, int n)

同memcpy()

21、void bzero(void *s, int n)

将参数s所指的内存区域前n个字节全部设置为零值

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 中,可以使用 POSIX 定时器来实现定时任务。下面是一个使用 POSIX 定时器实现定时任务的 C 语言示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <time.h> static void handler(int sig, siginfo_t *si, void *uc) { printf("定时器已经超时 %d 次\n", si->si_value.sival_int); } int main(int argc, char *argv[]) { timer_t timerid; struct sigevent sev; struct itimerspec its; long long freq_nanosecs; sigset_t mask; int sig; if (argc != 3) { fprintf(stderr, "用法: %s <超时时间(秒)> <超时次数>\n", argv[0]); exit(EXIT_FAILURE); } sig = SIGRTMIN; sev.sigev_notify = SIGEV_SIGNAL; sev.sigev_signo = sig; sev.sigev_value.sival_ptr = &timerid; if (timer_create(CLOCK_REALTIME, &sev, &timerid) == -1) { perror("timer_create"); exit(EXIT_FAILURE); } freq_nanosecs = atoll(argv[1]) * 1000000000; its.it_value.tv_sec = freq_nanosecs / 1000000000; its.it_value.tv_nsec = freq_nanosecs % 1000000000; its.it_interval.tv_sec = its.it_value.tv_sec; its.it_interval.tv_nsec = its.it_value.tv_nsec; if (timer_settime(timerid, 0, &its, NULL) == -1) { perror("timer_settime"); exit(EXIT_FAILURE); } printf("定时器已经开始,每 %lld 秒超时一次,共超时 %s 次\n", (long long) its.it_value.tv_sec, argv[2]); sigemptyset(&mask); sigaddset(&mask, sig); if (sigprocmask(SIG_SETMASK, &mask, NULL) == -1) { perror("sigprocmask"); exit(EXIT_FAILURE); } struct sigaction sa; sa.sa_flags = SA_SIGINFO; sa.sa_sigaction = handler; sigemptyset(&sa.sa_mask); if (sigaction(sig, &sa, NULL) == -1) { perror("sigaction"); exit(EXIT_FAILURE); } int count = 0; while (count < atoi(argv[2])) { pause(); count++; } exit(EXIT_SUCCESS); } ``` 这个示例代码中,我们使用了 POSIX 定时器来实现定时任务。首先,我们使用 timer_create 函数创建了一个定时器对象,并使用 timer_settime 函数指定了定时器的超时时间和超时次数。然后,使用 sigaction 函数安装了一个信号处理程序,该程序会在定时器超时时被调用。最后,我们使用 pause 函数使程序处于等待状态,直到定时器超时指定的次数后程序退出。 希望这个示例代码能够帮助你更好地理解如何在 Linux 中使用 C 语言实现定时任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值