同事小姑娘推荐使用博客记录当天:
加油
不错不错 开始记录,每天学习的函数。
边学边记录理解 应该映象会深刻
关于一些重要的链接
可以让你看到你的程序有没有泄漏内存之类的问题
centos安装
yum install valgrind 或者你可以下载压缩包安装
查看系统调用的简单的命令
strace -f
strace -m 可执行程序
查看cpu情况 top
发现一个可以把FILE* 转为int的函数,感觉很神奇 用特别官方的话来说就是得到stream指定的文件流使用的文件描述词
int f = fileno(FILE * fp );
其次就是看到了将一个文件的内容快速实现清理到你想要的长度函数接口
int ftruncate(int fd, off_t length);
*其中的off_t给的是你想要清理到多长的内容*
*要注意的是:fd是已经打开的文件描述符,且必须是以写入模式打开的文件*
系统直接使用的命令以前没用过
snprintf(cmd,"格式", , , );
system(cmd);
执行cmd命令
找到其中一条注意:(但是没看明白)
在编写具有 SUID/SGID 权限的程序时请勿使用system(), system()会继承环境变量, 通过环境变量可能会造成系统安全的
popen()函数:执行shell命令,并且得到命令返回值,并且用pclose()函数关闭
FILE *popen(const char * command,const char *type);
type是单向的流
如果type是 r 连接到command的标准输出
如果type是 w 连接到command的标准输入
其中command是指向为NULL结束的shell命令字符串的指针
返回值:是标准的i/o流或者NULL并且errno设置
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
void
print_result(FILE *fp)
{
char buf[100];
if(!fp) {
return;
}
printf("\n>>>\n");
while(memset(buf, 0, sizeof(buf)), fgets(buf, sizeof(buf) - 1, fp) != 0 ) {
printf("%s", buf);
}
printf("\n<<<\n");
}
int
main(void)
{
FILE *fp = NULL;
while(1) {
fp = NULL;
fp = popen("ls", "r");
if(!fp) {
perror("popen");
exit(EXIT_FAILURE);
}
print_result(fp);
pclose(fp);
sleep(1);
}
}
如上代码已经实验 个人理解 将ls的通道口存在fp中 fgest从fd中读取ls的结果 并且显示在屏幕
将字符串转为整形的函数目前接触到两个
atoi(char *)大家熟悉
今天在看代码的时候看到了的
strtol(char *)
功能貌似没有区别
获取文件大小的几种方式
1 通过文件流
fseek fell
2 通过路径
int stat(const char *path, struct stat *struct_stat);
int lstat(const char *path,struct stat *struct_stat);
3 通过文件描述符
int fstat(int fdp, struct stat *struct_stat);
一点
一点
来着
关于线程调用函数有点多 进行补充复习回顾
目前没有看到很好的例子
pthread_mutex_lock
pthread_cond_wait
pthread_cond_broadcast
pthread_mutex_unlock
pthread_create
pthread_cond_signal