摘要: 先说些题外话,今天学习execve(2)的使用,由于书上代码使用的是C89标准,所以下面这种代码都被我修改了 也就是在char前面加个const,因为"aaa"、"bbb"、"cc"都是字符串字面值(string literal),在C++标准中string literal只能转换成const ch 阅读全文
posted @ 2017-07-16 11:53 Harley_Quinn 阅读(5489) 评论(2) 推荐(1) 编辑
摘要: 参考《Linux/Unix系统编程手册》26.1.5,对于系统调用waitid() 若在option中设置WNOHANG位,与那么该系统调用就是非阻塞的,也就是说会立刻返回而不是等待子进程的状态发生变化。 如果子进程的状态(正在运行or正常退出or被信号终止or被信号停止)发生变化,则会把状态具体信 阅读全文
posted @ 2017-07-12 20:40 Harley_Quinn 阅读(9330) 评论(0) 推荐(1) 编辑
摘要: 之前写TLPI上的代码一直是手动进行错误处理,感觉代码冗余量很大,最后还是决定使用书上的tlph_hdr.h,顺便回顾下动态库的创建/使用。 参考很久之前的一篇博客 linux上静态库和动态库的编译和使用 但是感觉这篇博客写了后我一直没真正用过动态库,于是花了些时间复习下,结果倒好,一直出问题。 f 阅读全文
posted @ 2017-06-26 12:53 Harley_Quinn 阅读(13544) 评论(0) 推荐(0) 编辑
摘要: 上述代码是忽略了错误处理后的代码,其中Dlg类的OnReceive方法是给CAsyncSocket的派生类的OnReceive方法调用的(在此之前派生类保存了Dlg类的指针)。 由于是UDP套接字,所以不存在粘包问题,SendTo和RecvFrom的返回值是一样的(说明发送和接收的数据大小一样),那 阅读全文
posted @ 2017-06-08 20:59 Harley_Quinn 阅读(766) 评论(0) 推荐(0) 编辑
摘要: 在unistd.h中定义了变量char **environ;来表示当前所有环境变量,一般来说访问特定环境变量可以用getenv,但是想遍历所有环境变量就得使用environ。 即在程序内全局声明extern char **environ;当然设定main函数第3个参数也可以,不过不推荐,因为ISO 阅读全文
posted @ 2017-05-06 20:12 Harley_Quinn 阅读(656) 评论(0) 推荐(0) 编辑
摘要: C++中由于有构造函数的概念,所以很多时候初始化工作能够很方便地进行,而且由于C++标准库中有很多实用类(往往是类模板),现代C++能十分容易地编写。 比如现在要构造一个类Object,包含两个字段,一个为整型,一个为字符串。C++的做法会像下面这样 这样的代码简洁、安全,C++通过析构函数来实现资 阅读全文
posted @ 2017-04-26 04:49 Harley_Quinn 阅读(5982) 评论(0) 推荐(0) 编辑
摘要: 刚看完信号那章,觉得处理信号时的sigsetjmp/siglongjmp似乎跟异常的跳出很像,于是想去复习C++异常,然后发现了对I/O没有充分理解的问题。 题目是C++ Primer 5.6.3节的练习5.25,描述如下: 1、从标准输入读取2个整数, 输出第1个整数除以第2个整数的结果。 2、如 阅读全文
posted @ 2017-04-21 04:17 Harley_Quinn 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 今天突然想试下纯socket编程在两个系统上代码重合量有多大,只要不使用VC自定义的宏(比如SOCKET、SOCKADDR等等)感觉代码重合量挺大的。 比如最简单的TCP客户端和服务端对话,在VC中用int取代SOCKET宏,用struct sockaddr_in取代SOCKADDR_IN宏。 然后 阅读全文
posted @ 2017-04-18 22:55 Harley_Quinn 阅读(1850) 评论(0) 推荐(0) 编辑
摘要: 早期ISO C提供了像这样的函数来支持自定义信号处理 但是由于标准库并不涉及系统层次,所以很多细节方面都是未定义的,比如在执行某信号(下文均以SIGINT为例)的处理器函数时,是否阻塞该信号? 给出一段代码(均忽略了对系统调用的错误处理) 这段代码的执行结果是不确定的,参考APUE,早期版本sign 阅读全文
posted @ 2017-04-14 21:56 Harley_Quinn 阅读(812) 评论(0) 推荐(0) 编辑
摘要: 就是模拟setuid seteuid setreuid setresuid,感觉代码比书上大段的文字好记,就写成代码形式了。 main函数是TLPI第9章习题第1道的运行结果,然后模拟了一遍功能,后面几道也很简单就能做出来了。以后忘记的话看遍代码就能很快记起来了。 阅读全文
posted @ 2017-04-07 02:39 Harley_Quinn 阅读(410) 评论(0) 推荐(0) 编辑