创建进程注意事项等几则笔记
转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd
作者联系方式:李先静<xianjimli at hotmail dot com>
更新时间:2007-4-13
1. Favorites的图标。
在IE的收藏夹中,大部分收藏的图标都是IE默认的,但像google和sina等网站都使用了自己的图标。我发现minimo也支持这个功能,但不知道原因,今天在网上查了一下,原来只要在网站的根目录下放一个favicon.ico文件就行了。
2. 创建进程时的注意事项。
在linux下的C程序里,运行一个外部程序有好几种方式:popen、system和fork+execxx。在使用fork+execxx时,要注意:
l 最好不要让子进程继承除标准输入/输出/错误外的文件描述符。这可以在execxx前执行下列代码:
maxopen = sysconf (_SC_OPEN_MAX); for (i = 3; i < maxopen; i++) fcntl (i, F_SETFD, FD_CLOEXEC); |
l 记得检查execxx的返回值,如果执行失败,应该结束子进程,否则可能引发严重错误。如:
if(execl (...) < 0) { kill(getpid(), SIGKILL); } |
最好用kill而不是用exit结束子进程,因为exit会执行atexit安装的函数,这在有时是不期望的,特别是对于GUI应用程序来说更是如此。
3. 查看ARM版可执行文件的依赖关系。
ARM版的工具链往往没有与PC对应的ldd命令,查看可执行文件所依赖的动态库只能使用其它方法:
l 方法一:运行应用程序,查看proc下的信息。
cat /proc/pid/maps (pid换成真正的pid)
l 方法二:使用elf loader查看。
/lib/ld-linux.so.2 –list prog/sharelib (prog/sharelib换成真正的可执行文件/动态库)
~~end~~