C语言UNIX函数用法
wssjn1994
这个作者很懒,什么都没留下…
展开
-
ioctl传的cmd值不能为2,2是给内核用的
如题转载 2020-04-01 10:51:50 · 408 阅读 · 0 评论 -
selcet设置超时时间无效的原因
select函数执行返回后会把传入的timeval结构体的数值清零,所以每次都要重新设置select的超时时间才能起作用错误示范:struct timeval tm ;tm.tv_sec = 10; tm.tv_usec = 1000 ;{ int ret = select(fd_max + 1, &rdfd, NULL, &erfd, &tm); ...原创 2019-12-27 16:53:37 · 1436 阅读 · 0 评论 -
strncpy和snprintf在拷贝字符串时的区别与利弊分析
首先说结论strncpy:无论src是否是一个字符串,带不带\0,都拷贝n个字符到destsnprintf:最多拷贝size-1个字符到str,并在结尾加上\0,如果src不够size的大小,那么只拷贝src的长度,并在结尾加上\0以下是做的实验#include <string.h> #include <stdio.h> #include &...原创 2019-12-17 20:16:09 · 665 阅读 · 0 评论 -
linux获取前一天的时间
#if 0#include <sys/types.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h>#define DATE_FORMAT "%Y-%m-%d"int main( void ) { FI...原创 2019-12-11 14:57:02 · 586 阅读 · 0 评论 -
realloc函数使用注意事项
1.realloc函数原型void *realloc( void *ptr , size_t size )功能为给ptr重新分配内存大小,若size过大,导致原地址上没有足够空间可供申请,则会找一块符合条件的地址,把ptr的数据拷贝过去,返回这个地址,所以realloc之后地址可能不同2.使用方法char *ptr_old = (char *)malloc(1024);void...转载 2019-08-09 14:31:58 · 1162 阅读 · 0 评论 -
fopen返回errno值为2
errno错误码:errno0 :Successerrno1 :Operation not permittederrno2 :No such file or directoryerrno3 :No such processerrno4 :Interrupted system callerrno5 :Input/out...原创 2019-08-14 09:12:04 · 14287 阅读 · 0 评论 -
使用strncpy注意事项
1.strcpy是个不安全的函数,尽量使用strncpy替代2.strncpy不拷贝'\0',要注意详细解释见:https://blog.csdn.net/stpeace/article/details/22581763转载 2019-08-09 14:21:21 · 3354 阅读 · 0 评论 -
使用realloc注意
使用realloc可以实现重新分配已分配过的空间的大小,使用中可能出现double free 的情况,参考这篇文章https://blog.csdn.net/u011012049/article/details/83043125切勿把realloc的返回值和传的参数使用相同的值...转载 2019-08-06 17:27:49 · 385 阅读 · 0 评论 -
linux函数实现rm
需求是想实现一个删除文件或目录的功能,类似于 rm -rf 的功能,但我们知道的删除函数如unlink,remove,rmdir都不能删除非空目录,而如果使用system()来实现会开多余的进程,消耗多余的资源,所以尽量不要使用system()函数。需要写一个函数实现,借用这位博主的代码实现这个功能。转自:http://www.cnblogs.com/StartoverX/p/4600866.ht...转载 2019-05-27 17:46:20 · 883 阅读 · 0 评论 -
linux时间函数的坑
今天遇到一个需求,用户输入一个时间结构体,函数返回这个时间的上一秒的时间结构体,自己实现时发现要判断的逻辑太复杂,很容易出问题,于是在linux时间函数上学习了一下找到一种办法解决1.利用mktime函数把用户自定义时间转换成秒数 time_t mktime(struct tm *tm);2.秒数减一,利用localtime_r函数转换成时间 struct tm *localti...原创 2019-05-27 17:34:17 · 266 阅读 · 0 评论 -
使用信号量进行进程间的互斥
#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include &l转载 2019-03-12 20:03:09 · 762 阅读 · 0 评论 -
linux socket编程 出现信号SIGPIPE
服务端程序:#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <arpa/inet.h>#include <pthread.h>.转载 2019-03-12 19:47:36 · 224 阅读 · 0 评论 -
free造成段错误
错误范例如下char *str = (char *)malloc(16);char *hello = "hello";str = hello + 1;prntf("str = %s\n" , str);free(str);实际上要注意申请了内存的指针不能作为左值,这样会造成申请的地址无法被再次指向。本例中应把str = hello + 1;改为memcpy(...原创 2019-03-19 15:55:29 · 1717 阅读 · 0 评论 -
dup和dup2函数
#include <unistd.h>int dup(int fd);int dup2(int fd, int fd 2);关于dup函数,当我们调用它的时候,dup会返回一个新的描述符,这个描述一定是当前可用文件描述符中的最小值。我们知道,一般的0,1,2描述符分别被标准输入、输出、错误占用,所以在程序中如果close掉标准输出1后,调用dup函数,此时返回的描述符就...转载 2019-02-28 14:24:52 · 296 阅读 · 0 评论 -
fopen参数
r(read) 读w(write) 写a(append) 追加t(text) 文本模式b(banary) 二进制模式+ 读取和写入原创 2019-01-02 11:39:02 · 840 阅读 · 0 评论 -
fork函数
fork函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。#include <unistd.h>int main(){ pid_t fpid; fpid = fork(); if( fpid == 0 ) printf("create child fpid retur...原创 2019-01-02 11:07:05 · 138 阅读 · 0 评论 -
write如何实现高速写盘
#define _GNU_SOURCE#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <sched.h>#include <...原创 2018-11-05 09:38:38 · 1266 阅读 · 0 评论