1。windows和unix操作系统的进程间通讯方法有哪些?
2。列举操作系统的同步对象并举出应用实例。
3。在一个c函数中可以返回5个变量的值吗?c函数为什么不能返回一个大的变量?
4。描述tcp连接建立与释放的过程。
5.怎么在一个链表中插入,删除一个结点?
希望大家讨论一下,谢谢了

解决方案 »

  1.   

    4。tcp的建立要经过三次握手,释放就不清楚了
      

  2.   

    个人拙见!3.返回5个变量,如果变量类型相同,就用指针了。指针指向变量数组的首地址。如果类型不一样,将五个变量组成结构体,返回结构对象也可以啊。4.Tcp连接建立、释放都为三次握手。
    建立连接:
    A           B
    SYN -----> 
       <----- SYN , ACK
    ACK ----->释放连接:
    FIN----->
       <-----ACK,FIN
    ACK------>           5.插入节点
    让插入位置的前一节点的next指针指向待插入的节点,待插入的节点的Next指针指向待插入点的后一节点。
    删除:让前一节点的Next指针指向待删节点的下一节点
      

  3.   

    问题3:这是系统考虑到函数的效率才会这样做的。。在汇编中返回一个值一般都是以EAX返回的。这样一般只能带一个32位的数。。
    这样返回一个结构中返回一个指针,会很有效率的免去了值之间的拷贝
      

  4.   

    我的回答:
    1,Socket。
    2,Unix系统:信号量、锁、信号灯;Windows系统:临界区、事件。
    3,可以,使用指针。因为返回值过大会造成函数栈溢出。
    4,建立连接三次握手,释放连接两次握手。
    5,是STL的list吗?传入可以用push_back,push_front,insert,删除可以用remove,remove_if,erase.
      

  5.   

    同意楼上的:)
    在第一个问题中补充:
    1,socket, messages, pipe, signal, shared memory etc.
       windows中特有的:WM_COPYDATA, DDE
    2,
    3, 返回结构实际上是拷贝这个结构中的数据入栈,数据大了会溢出,但是可以返回结构指针。
    4,偶觉得就没什么意思了,无非就是TCP和UDP的connection-oriented和connectionless问题,还不如考考socket的几种基础算法,比较sync和Asyn的优劣。
    5,问得太含糊了,都不知道是问的算法还是问的基本实现?如果是后者,可不可以翻资料的?这玩意没什么意义去记的:)