UNP
DawnRayYang
我觉得偶尔我还是灵光~~
展开
-
accept: Invalid argument
正在学习简单的unix或者说linux下的网络编程。书上的例子竟然都搞不定……,accept: Invalid argument这个错误郁闷了我一会。于是插上网线……多谢cu上面找到了答案。引用地址:http://blog.chinaunix.net/u/12592/showart_1300580.html。谢谢这位老兄先。问题解决了,代码还没有上注释,稍后再发上来。原文如下:今天师兄拿来一个ep原创 2008-12-15 23:02:00 · 3346 阅读 · 2 评论 -
FIFO不是特别的好用
<br />FIFO虽然总是作为一种比pipe高级的IPC来被介绍的。<br />但是,最近我写程序的时候发现,FIFO其实也不是很好用的。<br />需要认真分析使用的条件、环境。<br /> <br />最大的BUG就是,FIFO在使用的时候,要不然阻塞读,要不然阻塞写。<br />想读写都非阻塞是没门的。<br />至少我发现没有方法。<br />如果各位大师谁有知道的,请告知小弟我。<br /> <br />IPC的时候我们都不想阻塞。那就不适合用FIFO。<br />至于用什么合适,正在研究APU原创 2011-05-11 14:31:00 · 566 阅读 · 0 评论 -
linux 应用程序调试初步
linux 应用程序调试最近调试linux下面的应用程序被干的很惨两个BUG干翻我了首先是bus error,总线错误,非对齐访问引起的在板子上调试了半天,没有结果程序里总共用了2个结构体用各种__attribute__(());来搞还是不行aligned(2),aligned(4)都不行,packed都不支持……直接被ignore掉了……郁闷的不行然后想产生core dump文件来调试,但是板子上没有gdb,没有gdbserver,没有jtag……要了亲命了,但是我发扬调程序比追女生简单的大无畏精神继续研原创 2011-05-20 11:14:00 · 927 阅读 · 0 评论 -
linux下select()中的timeout的设置与不设置问题
<br />linux下的select,注意咯,不是pselect。<br />select()函数的最后一个参数是timeout,用来设置超时用的。<br />用的是一个struct timeval结构,需要用到sys/time.h文件。<br />struct timeval {<br />long tv_sec; 秒<br />long tv_usec; 毫毛<br />}<br /> <br />设置了timeout的值之后呢,select在没有文件描述符监视可用的情况下,会等待这个timeout的原创 2011-04-16 10:58:00 · 6144 阅读 · 1 评论 -
linux共享内存初级使用
<br />要在不同的进程之间共享一个数组,怎么办?用文件好慢。<br />用管道的话,管道会阻塞的。<br />用共享内存好些。<br />在UNP2里面其实都给出了使用例子了。只是我没有UNP2罢了……只能看PDF去了。<br /> <br />用到的函数有<br />shmget 申请一个共享内存,得到一个id号,需要提供一个key_t。<br />shmctl 控制共享内存的行为,获取它的结构啊,或者把它干掉等等。<br />shmat 把共享内存连接到地址上去,一种映射。<br />shm原创 2011-04-21 19:58:00 · 637 阅读 · 0 评论 -
socket编程中write返回-1的问题
<br />作为服务器,有客户端连接进来。TCP协议。<br />当客户端断开连接的时候,按道理说write将会不成功的。<br />那么当write不成功的时候是应该返回-1的。<br /> <br />实际情况是,当客户端断开的时候,write仍然会成功,再下一次才会失败。<br />而失败了之后,进程就结束掉了。没有返回-1.<br /> <br />google之后知道:<br />客户端关掉之后,再往这个文件描述符中写东西会引发一个SIGPIPE信号,这个信号的默认动作就是让进程结束掉。……。好吧原创 2011-04-25 19:22:00 · 7853 阅读 · 0 评论 -
linux system V 信号量的初步理解
几个函数:semget semop semctl在几个进程间,有一个进程先用semget建立,指定大小,其他的进程用semget的时候size写0.怎么保证几个进程都认识同样的信号量呢?答案是在semget中第一个参数用相同的值,比如用ftok的相同的路径,得到同一个id。semctl的SETVAL还是需要的,开始初始化的时候一定要,不然对未初始化的进行semop动作,会阻塞在那里的。semop则是具体的PV操作了,PV在每个进程中自己定义自己的,当然一般都是-1和1.目前遇到的情况就是这样子了。以后再有新原创 2011-04-28 16:33:00 · 973 阅读 · 0 评论 -
linux socket 中判断对方关闭的两种方式
<br />在TCP中,我是服务器,对方是客户端,对方挂掉了,我怎么能够知道呢?<br />UNP中说的FIN,RST对于应用层来讲,是不可见的……<br />我跟客户端的联系只是通过read,write嘛。<br />socket又不会自动给我信号啥的。<br /> <br />当对方挂掉了之后呢<br />如果对方正常关闭的,应该发一个FIN过来。<br />我这边的select到一个可读,然后读返回0.<br />如果对方不正常挂掉了,应该发一个RST过来。<br />我这边select表示可写。<b原创 2011-04-26 09:21:00 · 5946 阅读 · 0 评论 -
VMware中虚拟机无法通过NAT与主机共享上网的一种解决方法
主机安装的XP,虚拟机用的是UBUNTU。开机之后UBUNTU显示无法连接上网络,各种尝试。后来在XP中cmd里ipconfig一看,网卡DHCP到的地址是1段的。而VMWARE中NAT的DHCP地址默认是什么24段的。果断打开VMWARE的EDIT的虚拟网络编辑原创 2011-09-10 09:00:19 · 754 阅读 · 0 评论