分类目录归档:linux

linux方面的菜鸟心得

蛋疼系列之——memcpy源码分析

摘要:曾经笔试题目要求写memcpy的C实现,后来也常见面试题目中出现memcpy,今天动手看了下GNU的实现,感慨感慨。本文先从网上的一个经典答案扩展开来,最后分析其GNU glibc2.14的实现。

发表在 C/Cplusplus, linux, 编译问题与优化, 蛋疼系列 | 标签为 , , | 留下评论

shell ssh登陆后执行一段代码

摘要:有需求是操作上百台机器,一台一台登陆就够让人崩溃了。因此就想如何在shell脚本中自动登陆上一批机器,然后在这些机器上执行命令。曾经用过lftp,用EOF可以实现ftp登陆机器并使用lftp的相关命令;今天尝试了下ssh,没想到也可以,不过由于信任依赖关系,需要一些输入,通过更改StrictHostKeyChecking配置项规避该输入问题;如一楼评论所言“yes/no 的问题,可以用 expect 搞定,还能支持未建立信任关系的时候自动输入密码。修改 ssh_config 需要 root 权限,不容易实现”,本文最后给出了使用expect实现的例子。

发表在 shell, 蛋疼系列 | 5 条评论

单例singleton的多线程安全实现

摘要:读《程序员的自我修养》,其中一节讲到多线程安全的单例实现,其中涉及到了3个知识点:volatile、锁、“Linux kernel Memory Barrier”。本文从网上找了些资料,拼凑一番,有错请不吝指出。

发表在 C/Cplusplus, linux | 标签为 , | 4 条评论

网络编程的一些事

摘要:本文简述采用socket进行网络编程的方法,以及常用的服务器、客户端连接模型,主要内容参考《linux程序设计》、《APUE》。

发表在 C/Cplusplus, linux | 标签为 , | 留下评论

关于linux文件读写的几个系统调用

摘要:本文简单描述linux下文件读写的几个系统调用,文件读取方式,然后介绍几个初学者不常用的系统调用。

发表在 C/Cplusplus, linux, 操作系统 | 标签为 , , , | 2 条评论

linux多线程编程,你还在用sleep么?用pthread_cond_timedwait吧

摘要:多线程编程中,线程A循环计算,然后sleep一会接着计算(目的是减少CPU利用率);存在的问题是,如果要关闭程序,通常选择join线程A等待线程A退出,可是我们必须等到sleep函数返回,该线程A才能正常退出,这无疑减慢了程序退出的速度。当然,你可以terminate线程A,但这样做很不优雅,且会存在一些未知问题。采用pthread_cond_timedwait(pthread_cond_t * cond, pthread_mutex_t *mutex, const struct timespec * abstime)可以优雅的解决该问题,设置等待条件变量cond,如果超时,则返回;如果等待到条件变量cond,也返回。本文暂不将内部机理,仅演示一个demo。

发表在 C/Cplusplus, linux | 标签为 , | 2 条评论

rm -f的哲学

rm -f “hello.*” 然后查看(返回值)$?,返回值为0。因为“-f, –force           ignore nonexistent files, never prompt”,虽然要删除的文件不存在,但也不报错。

发表在 shell, 代码人生 | 标签为 | 留下评论