linux文件描述符冲突,数据串了 [问题点数:20分]

Bbs1
本版专家分:53
结帖率 87.8%
Bbs1
本版专家分:36
Bbs1
本版专家分:36
Bbs1
本版专家分:53
Linux:文件描述符
我们之前就知道在Linux操作系统下 “一切皆<em>文件</em>” ,所以在这个条件下,所有研究的对象都变相的相当于研究<em>文件</em>,那么对<em>文件</em>系统的研究也应该是必须的。 <em>文件</em><em>描述符</em>fd 我们的内核利用<em>文件</em><em>描述符</em>来访问<em>文件</em>,每个<em>文件</em><em>描述符</em>都是非负整数,打开现存的<em>文件</em>或者是新建<em>文件</em>时,内核会返回一个<em>文件</em><em>描述符</em>,读写<em>文件</em>也需要使用<em>文件</em><em>描述符</em>来指定待读写的<em>文件</em>。 这样说来,其实每个打开的<em>文件</em>,都对应属于其本身的一个...
linux 文件描述符
  .每一个进程都有自己的<em>文件</em><em>描述符</em>集合.   .当创建进程时,通常有3个打开<em>文件</em><em>描述符</em>(0,1,2),0代表标准输入,1代表标准输出,2代表标准错误,它们统称为标准IO.   .当多个<em>描述符</em>指向同一个<em>文件</em>,每个<em>文件</em><em>描述符</em>仍保持他独特的性能.   .由于<em>文件</em><em>描述符</em>在一个进程中是特有的,因此不能在多个进程中间实现共享,而唯一的例外是在父/子进程之间,当一个进程调用fork时...
【Linux】文件描述符
1、open函数的返回值在认识open函数的返回值之前,先来认识两个概念:系统调用和库函数。(1)系统调用open、close、read、write等都属于系统提供的接口,称之为系统调用接口。(2)库函数fopen、fclose、fread、fwrite都是C标准库当中的函数,称为库函数(libc)。故,f#系列的函数,都是对系统调用的封装,方便二次开发。下面来看一下open()函数:int op...
Linux文件描述符
在Linux通用I/O模型中,I/O操作系列函数(系统调用)都是围绕一个叫做<em>文件</em><em>描述符</em>的整数展开。这不禁让人产生疑问:这个整数代表什么?一个数值代表一个<em>文件</em>吗?随便传一个整数进去调用可以吗? 解答以上疑问,需要更深入学习——<em>文件</em><em>描述符</em>(File Descriptor)。 图解 理解具体情况,需要了解由内核维护的3个<em>数据</em>结构: 进程级<em>文件</em><em>描述符</em>表(file descriptor table)...
口号冲突
在电脑上插上一个<em>串</em>口线与其他装置连接,此<em>串</em>口设备的<em>串</em>口号显示为COM3rn我自己做了一个<em>串</em>口工具,使用自己的<em>串</em>口工具打开此<em>串</em>口后,又使用某公司开发的<em>串</em>口工具打开此<em>串</em>口时,提示打开失败rn应该是检测到已经打开,不能再打开了rnrn现在,我想在自己的<em>串</em>口工具上也加上此功能,也就是,使用别的<em>串</em>口工具打开<em>串</em>口后rn再使用自己的<em>串</em>口工具打开此<em>串</em>口时,会提示<em>冲突</em>,应该怎么做,有相关的api吗?rnrn我的环境的windows xp
【Linux】文件描述符和FILE结构体
<em>文件</em><em>描述符</em> <em>文件</em><em>描述符</em>是一个整数,用来标记每一个的打开的<em>文件</em>和socket。 第一个打开的<em>文件</em>的<em>文件</em><em>描述符</em>是0,第二个是1...以此论推 在Unix/Linux系统下,0号<em>文件</em>对应的是标准输入(stdin),1号<em>文件</em>对应的是标准输出(stdout),2号<em>文件</em>对应的是标准错误(stderr) 每个进程都在其PCB中保存着一份<em>文件</em><em>描述符</em>表,而<em>文件</em><em>描述符</em>作为这个表的索引可以让我们快速的查到每个表
linux 特殊的文件描述符
# File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and resul
linux基础-文件描述符
<em>文件</em><em>描述符</em>简介 <em>文件</em><em>描述符</em>(file descriptor)通常是一个小的非负整数,内核用以标识一个特定进程正在访问的<em>文件</em>。当打开一个现有<em>文件</em>或创建一个新<em>文件</em>时,内核向进程返回一个<em>文件</em><em>描述符</em>。 每个进程在PCB(Process Control Block)中保存着一份<em>文件</em><em>描述符</em>表,<em>文件</em><em>描述符</em>就是这个表的索引,每个表项都有一个指向已打开<em>文件</em>的指针。 标准输入输出 <em>文件</em><em>描述符</em> 0 与 进程的...
Linux的基础文件描述符
环境:Vmware Workstation;CentOS-6.4-x86_64 说明: 1、Linux下所有内容都是<em>文件</em>,<em>文件</em>都有<em>文件</em><em>描述符</em>。 2、<em>文件</em><em>描述符</em>:就是打开的<em>文件</em>编号。 3、一个进程会默认打开三个<em>文件</em>:标准输入(stdin),标准输出(stdout),标准出错(stderr)。 4、默认打开的三个<em>文件</em>,头<em>文件</em>为unistd.h 程序: 作用:验证进程默认打
linux文件描述符-标准输入输出
当某个进程打开<em>文件</em>时,操作系统返回相应的<em>文件</em><em>描述符</em>,进程为了处理该<em>文件</em>必须引用此<em>描述符</em>。 所谓的<em>文件</em><em>描述符</em>是一个低级的正整数。最前面的三个<em>文件</em><em>描述符</em>(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。 因此,函数 scanf() 使用 stdin,而函数 printf() 使用 stdout。你可以用不同的<em>文件</em><em>描述符</em>改写默认的设置并重定向进程...
Linux系统调用之文件描述符
每个运行的中的程序被称为进程,他有一些与之关联的<em>文件</em><em>描述符</em>。 <em>文件</em><em>描述符</em>就相当于Windows中的File * 指针,标记着<em>文件</em>信息,然而我们可以知道<em>文件</em><em>描述符</em>为一个非负整数,怎么用一个非负整数描述一个<em>文件</em>呢。 在操作系统中,每一个进程都有标记自己的进程控制块(PCB)。 在PCB中,就有关于此进程所打开的<em>文件</em>信息,因为<em>文件</em>信息众多,而且打开的<em>文件</em>可能较多。就用一个名为file的struct...
linux加大服务器文件描述符
查看系统<em>文件</em><em>描述符</em> [root@alice ~]# ulimit -n 65535 修改 [root@alice ~]# echo '* - nofile 65535'&gt;&gt;/etc/security/limits.conf [root@alice ~]# tail -1 /etc/security/limits.conf *...
linux文件描述符和套接字的问题
记得刚学<em>linux</em>的时候 就会听到一句"一切皆<em>文件</em>" 上面标准输入 标准输出 标准错误 重定向 blablabla... 今天在写一个基于epoll的聊天室  客户端fork 父进程负责读 子进程负责写 感觉这好像服务端 主从备份..还像nginx中的进程的模型,各个worker 从 listen 后的 master fork出来的 master负责分发 worker负责处理  主要是映射到各个
Linux 文件描述符详解
Overview了解Linux怎样处理输入和输出是非常重要的。一旦我们了解其原理以后,我们就可以正确熟练地使用脚本把内容输出到正确的位置。同样我们也可以更好地理解输入重定向和输出重定向。Linux标准<em>文件</em><em>描述符</em> <em>文件</em><em>描述符</em> 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误输出 Linux系统将所有设备都当作<em>文件</em>
FileDescriptor(文件描述符 )与Linux文件系统
最近看《Linux System Programming》看到关于File Descriptor的描述,看java文档感觉似是而非不太清楚,从<em>linux</em>方面就很容易了。 FileDescriptor 一个打开的<em>文件</em>通过唯一的<em>描述符</em>进行引用,该<em>描述符</em>是打开<em>文件</em>的元<em>数据</em>到<em>文件</em>本身的映射。在Linux内核中,这个<em>描述符</em>称为<em>文件</em><em>描述符</em>(FileDescriptor),<em>文件</em><em>描述符</em>用一个整数表示(
Linux 文件描述符解析
关键<em>数据</em>结构在现代操作系统抽象中,进程是资源管理的最小单位,线程是CPU调度的最小单位。Linux有着“一切皆<em>文件</em>”的说法,很大的原因就是<em>文件</em><em>描述符</em>这个强大的抽象,为I/O操作提供了一个统一的<em>数据</em>结构和接口。内核维护的3个<em>数据</em>结构: 进程级的<em>文件</em><em>描述符</em>表(descriptor table),每个进程都有自己独立的<em>文件</em><em>描述符</em>表,主要包含了是:控制标志(flags)和指向打开<em>文件</em>表象的指针。POSIX标
Linux 文件描述符最大数值
Linux <em>文件</em><em>描述符</em>最大数值 查看操作系统<em>文件</em><em>描述符</em>最大数值: $ cat /proc/sys/fs/file-max 查看登录shell<em>文件</em><em>描述符</em>最大数值: ulimit−Hn硬资源限制(hardlimit) ulimit -Hn 硬资源限制 (hard limit) ulimit -n 软资源限制 (soft limit) 修改操作系统<em>文件</em><em>描述符</em>最大数值: 临时性修改: echo
【Linux】再谈文件描述符之缓冲区
因为IO相关函数与系统调用接口对应,并且库函数封装系统调用,所以本质上,访问<em>文件</em>都是通过fd访问的。所以C库当中的FILE结构体内部,必定封装了fd。 往标准输出写入有三种方法: printf(str1);//C库函数 fwrite(str2,1,strlen(str2),stdout);//C库函数 write(1,str3,strlen(str3));//系统调用 来段代码研究下...
Linux文件描述符、重定向和管道
目录 1.一切皆<em>文件</em> 2.<em>文件</em>类型 3.<em>文件</em><em>描述符</em> (1)输入输出标准说明 (2)查看一个进程打开了哪些<em>文件</em> (3)一个进程可以打开的<em>文件</em><em>描述符</em>限制 4.重定向 (1)输出重定向 补充: (2)输入重定向 (3)EOF (4)错误重定向 (5)null黑洞和zero空<em>文件</em> (6)&amp;&gt;和&gt;&amp;符号 5.管道 | 的使用 1.一切皆<em>文件</em> 普通...
linux文件描述符
<em>linux</em>中<em>文件</em><em>描述符</em> #exec命令用于启动一个新的shell,并在新的shell中执行指定命令。在实际应用中,exec命令被用来 处理<em>文件</em><em>描述符</em>,此时(也只在此时)exec不会启动新shell替代当前的shell。 1 root@ubuntu:/home/dyx/<em>linux</em> 10:40:36 19# cat ping.txt 2 PING baidu....
Linux 文件描述符文件
一、<em>文件</em><em>描述符</em>fd (1)、每个进程PCB结构中有<em>文件</em><em>描述符</em>指针,指向files_struct的<em>文件</em><em>描述符</em>表,记录每个进程打开的<em>文件</em>列表。 (2)、系统内核不允许应用程序访问进程的<em>文件</em><em>描述符</em>表,只返回这些结构的索引即<em>文件</em><em>描述符</em>ID(File Description)给应用程序。 (3)、Linux系统中,应用程序通过这些<em>文件</em><em>描述符</em>来实现让内核对<em>文件</em>的访问。 (4)、每个进程能够访问的<em>文件</em>描
【Linux学习笔记】文件描述符
<em>文件</em><em>描述符</em> <em>文件</em><em>描述符</em>在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开<em>文件</em>的记录表。当程序打开一个现有<em>文件</em>或者创建一个新<em>文件</em>时,内核向进程返回一个<em>文件</em><em>描述符</em>。 0&amp;amp;1&amp;amp;2 Linux进程默认情况下会有三个缺省打开的<em>文件</em><em>描述符</em>,分别是标准输入0,标准输出1,标准错误2。 0,1,2对应的物理设备一般是:键盘,显示器,显示器。 ...
linux 输入输出流和文件描述符浅析
File descriptors 是一个整数 表内存管理的对象,该对象可以由进程进行读写。 一个进程可以获取File descriptors通过打开<em>文件</em> 目录 或者设备,通过创建管道 或者复制一个已经存在的descriptors, <em>文件</em><em>描述符</em>将<em>文件</em> 管道 设备都抽象化为一样的东西,都像字节流.<em>文件</em><em>描述符</em>作为索引映射到 进程表中。每一个进程都有<em>文件</em><em>描述符</em>的私有化控件,从0开始。进程读取<em>文件</em>
Linux——文件描述符文件管理结构
Linux中的<em>文件</em> <em>文件</em>: Linux内核将一切视为<em>文件</em>,那么Linux中<em>文件</em>是什么呢?其既可以是事实上的真正的物理<em>文件</em>,也可以是设备,管道,甚至可以是一块内存,狭义的<em>文件</em>是指<em>文件</em>系统中的物理<em>文件</em>,广义上的<em>文件</em>可以是Linux管理的所有对象。这些广义的<em>文件</em>利用VFS机制,以<em>文件</em>系统的形式挂载在Linux内核中,对外提供一系列的<em>文件</em>操作接口。 <em>文件</em><em>描述符</em>: 对于<em>linux</em>而言,所有对设
linux之加大服务器文件描述符
1.ulimit [root@cs70-moban ~]# ulimit -n 1024 2.开机自启动的两种设置方式 2.1 [root@cs70-moban ~]# echo '* - nofile 65535'>>/etc//security/limits.conf  [root@cs70-moban ~]# ulimit -n 1024 [root@cs70-moban
linux文件描述符查看与调整
1、<em>文件</em><em>描述符</em>总量与使用量 cat /proc/sys/fs/file-nr #第一列:为已分配的FD数量 #第二列:为已分配但尚未使用的FD数量 #第三列:为系统可用的最大FD数量 2、获取进程打开的<em>文件</em><em>描述符</em> ll /proc/3253/fd #统计数量用 ll /proc/3253/fd | wc -l 3、查看<em>文件</em><em>描述符</em>总量限制 ulimit -n 4、临时更改<em>文件</em><em>描述符</em>总量限制...
Linux加大服务器文件描述符
<em>文件</em><em>描述符</em><em>文件</em><em>描述符</em>是由无符号整数表示的句柄(一般使用范围0~65535),进程使用它来标识打开的<em>文件</em>。<em>文件</em><em>描述符</em>与包括相关信息(如<em>文件</em>的打开模式、<em>文件</em>的位置类型、<em>文件</em>的初始类型等)的<em>文件</em>对象相关联,这些信息被称作<em>文件</em>的上下文。对于内核而言,所有打开的<em>文件</em>都是通过<em>文件</em><em>描述符</em>引用的。当打开一个现有<em>文件</em>或者创建一个新<em>文件</em>时,内核向进程返回一个<em>文件</em><em>描述符</em>。按照惯例,UNIX系统shell使用<em>文件</em><em>描述符</em>0与
解析linux中的文件描述符
一、<em>文件</em><em>描述符</em>简介 <em>文件</em><em>描述符</em>在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开<em>文件</em>的记录表。当程序打开一个现有<em>文件</em>或者创建一个新<em>文件</em>时,内核向进程返回一个<em>文件</em><em>描述符</em>。在程序设计中,一些涉及底层的程序编写往往会围绕着<em>文件</em><em>描述符</em>展开。习惯上,标准输入的<em>文件</em><em>描述符</em>是 0,标准输出是 1,标准错误是 2。 画图表示 二、如何创建<em>文件</em><em>描述符</em> 进程获取<em>文件</em><em>描述符</em>最常
Linux 文件描述符文件系统
列表内容 <em>文件</em><em>描述符</em>Linux下一切皆<em>文件</em> <em>文件</em><em>描述符</em>是为了高效的管理已经被打开的<em>文件</em>而设计的 <em>文件</em><em>描述符</em>作为操作<em>文件</em>的句柄 在Linux 下一切I/O操作的系统调用都是通过<em>文件</em><em>描述符</em>操作的。<em>文件</em><em>描述符</em>是一个非负整数,Linux下进程要访问一个<em>文件</em>就必须拿到该<em>文件</em>的<em>文件</em><em>描述符</em>。每一个进程控制块结构体(PCB)中中都有一个指向 file_struct结构体的指针。 file_struct结构体中
Linux编程(文件描述符
在Linux编程世界中,不可能没听过<em>文件</em><em>描述符</em>这个概念,我们操纵任何设备的时候,几乎都要通过它来达成的,它究竟是何方神圣呢?随我<em>描述符</em>科学家来一探究竟。 首先,我们在Linux下打开<em>文件</em>用的都是如下代码: int fd = open(... ...); 当然有同学可能会说,有时也可以用fopen(),但是fopen()只是标
linux文件描述符重定向dup&dup2
ForeWord 本文介绍了对输入<em>文件</em><em>描述符</em>重定向的函数dup&dup2,并用代码验证其功能。 ~**tips:全文阅读需5min**~Before 在没有duo&dup2,之前,要实现<em>文件</em><em>描述符</em>重定向(输入)是这样做的:先关闭1号<em>文件</em><em>描述符</em>,再打开<em>文件</em>完成重定向。 代码:运行:dup dup是系统提供的进行<em>文件</em><em>描述符</em>重定向的接口: 其中: 1. odfd是当前<em>文件</em><em>描述符</em>的一份拷贝
【Linux】---文件描述符文件指针
<em>文件</em><em>描述符</em>一、<em>文件</em><em>描述符</em> - 1、概念: 在<em>linux</em>下一切皆<em>文件</em>爱你的思想,<em>文件</em>被分为普通<em>文件</em>,目录<em>文件</em>,链接<em>文件</em>和设备<em>文件</em>。 <em>文件</em><em>描述符</em>是内核为了高效管理已被打开的<em>文件</em>所创建的索引,它是一个非负整数,用于指代被打开的<em>文件</em>,所有执行I/O操作的系统调用都要通过<em>文件</em><em>描述符</em>。 程序刚启动的时候,0,1,2分别表示标准输入,标准输出,标准错误。因此此时当我们打开一个<em>文件</em>的时候,他的<em>文件</em><em>描述符</em>是3
Linux文件描述符和重定向操作符
<em>文件</em><em>描述符</em>: 是程序发送输出和获取输入的地方。当执行一个程序时,运行该程序的进程就会打开3个<em>文件</em><em>描述符</em>。3个<em>文件</em><em>描述符</em>见下表: 一般地,标准输入来自键盘,标准输出和标准错误输出会输出到屏幕上。在Liunx的shell中,可以通过重定向操作符来重定向标准输入,标准输出,标准错误输入。 重定向操作符的内容见下表:
[linux]文件描述符再探
第一点也是最重要的一点:在<em>linux</em>上所有的硬件挂载/dev/mouse,pipe,<em>文件</em>,socket等都是<em>文件</em>!都是可以通过<em>文件</em><em>描述符</em>来访问到的。 <em>文件</em><em>描述符</em>file descriptor:是一个对<em>文件</em>的索引号,可以认为是一个公司里面的员工id号,通过id可以索引到员工,然后对员工进行一些操作。 首先要理解<em>文件</em><em>描述符</em>,得有如下3个内核所维护的<em>数据</em>结构概念: 1.进程级的<em>文件</em><em>描述符</em>
Linux文件描述符和重定向
<em>文件</em><em>描述符</em>: 0:stdin(标准输入) 1:stdout(标准输出) 2:stderr(标准错误) 成功和不成功的命令: [student@myhost ~]$ ls + ls: cannot access +: No such file or directory [student@myhost ~]$ echo $? #命令出错,$?返回非零错误值 2 [student@myhos...
Linux编程--文件描述符fd
    <em>linux</em>中, 每一个进程在内核中,都对应有一个“打开<em>文件</em>”数组,存放指向<em>文件</em>对象的指针,而 fd 是这个数组的下标。     我们对<em>文件</em>进行操作时,系统调用,将fd传入内核,内核通过fd找到<em>文件</em>,对<em>文件</em>进行操作。     既然是数组下标,fd的类型为int, &amp;lt; 0 为非法值, &amp;gt;=0 为合法值。在<em>linux</em>中,一个进程默认可以打开的<em>文件</em>数为1024个,fd的范围为0~1...
Linux文件描述符相关问题?
Linux<em>文件</em><em>描述符</em>是不是即包含<em>文件</em>地址也就是索引,也包含<em>文件</em>状态?不知道这样理解对不对?
Linux 网络编程 epoll 文件描述符
服务器端新建一个监听套接字时,<em>文件</em><em>描述符</em>是3;当客户端连接服务器时,新建一个连接套接字,该<em>文件</em><em>描述符</em>应该是4才对吧?但实际输出是5,为什么呢?求助大神!rnrn服务器代码(图片):rn[img=https://img-bbs.csdn.net/upload/201508/30/1440904468_696164.png][/img]rnrn客户端代码(图片):rn[img=https://img-bbs.csdn.net/upload/201508/30/1440904465_59845.png][/img]rnrn服务器代码:rn[code=c]rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rnrnint init_server(const char *ipstr, unsigned short port, int backlog)rnrn int s = socket(PF_INET, SOCK_STREAM, 0);rn if(0 > s)rn perror("socket");rn return -1;rn rn printf("s = %d\n", s);rn struct sockaddr_in addr = rn .sin_family = PF_INET,rn .sin_port = htons(port),rn .sin_addr = rn .s_addr = ((ipstr == NULL) ? INADDR_ANY : inet_addr(ipstr)),rn ,rn ;rn memset(addr.sin_zero, 0, sizeof(addr.sin_zero));rn socklen_t len = sizeof(addr);rn if(0 > bind(s, (struct sockaddr*)&addr, len))rn perror("bind");rn return -1;rn rn rn if(0 > listen(s, backlog))rn perror("listen");rn return -1;rn rnrn return s; rnrnrnint add_event(int efd, int fd, unsigned int event)rnrn struct epoll_event evt;rn evt.events = event;rn evt.data.fd = fd;rn return epoll_ctl(efd, EPOLL_CTL_ADD, fd, &evt);rnrnrnint del_event(int efd, int fd, unsigned int event)rnrn struct epoll_event evt = rn .events = event,rn .data = rn .fd = fd,rn ,rn ;rn return epoll_ctl(efd, EPOLL_CTL_DEL, fd, &evt);rnrnrnint main()rnrn int s = init_server(NULL, 9999, 3);rn if(0 > s)rn return -1;rn rnrn int efd = epoll_create(1);rn if(0 > efd)rn perror("epoll_create");rn return -1;rn rnrn if(0 > add_event(efd, s, EPOLLIN))rn perror("add_event");rn return -1;rn rnrn printf("Wait for a new comming ...\n");rnrn #define MAX 1024rn struct epoll_event evts[MAX];rn int timeout = -1;rn while(1)rn int ret = epoll_wait(efd, evts, MAX, timeout);rn if(0 > ret)rn perror("epoll_wait");rn break;rn else if(0 == ret)rn printf("\tTimeout.\n");rn continue;rn rn int i;rn for(i = 0; i < ret; i++)rn if(s == evts[i].data.fd)rn struct sockaddr_in addr;rn memset(&addr, 0, sizeof(addr));rn socklen_t len = sizeof(addr);rn rn int rws = accept(s, (struct sockaddr*)&addr, &len);rn if(0 > rws)rn perror("accept");rn close(s);rn return -1;rn rnrn printf("client %d :ip[%s]:port[%u]\n", rn rws, inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));rnrn if(0 > add_event(efd, rws, EPOLLIN))rn perror("add_event fail ");rn close(rws);rn rn elsern char buf[MAX];rn memset(buf, 0, MAX);rn int num = recv(evts[i].data.fd, buf, MAX-1, 0);rn if(0 >= num)rn printf("id = %d, client %d leave.\n", i, evts[i].data.fd);rn if(0 > del_event(efd, evts[i].data.fd, EPOLLIN))rn perror("del fd");rn close(evts[i].data.fd);rn elsern printf("socket[%d], RECV[%dbytes]:%s\n", rn evts[i].data.fd, num, buf);rn rn rn rn rnrnrn[/code]rnrn客户端代码:rn[code=c]rn#include rn#include rn#include rn#include rn#include rn#include rnrnrnint main(int argc, char *argv[])rnrn char *ipstr = "127.0.0.1";rn unsigned short port = 9999;rn if(argc == 3)rn ipstr = argv[1];rn port = atoi(argv[2]);rn rnrn int c = socket(PF_INET, SOCK_STREAM,0);rn if (c < 0)rn perror("socket");rn return -1;rn rn struct sockaddr_in addr = rn .sin_family = PF_INET,rn .sin_port = htons(port),rn .sin_addr.s_addr = inet_addr(ipstr),rn .sin_zero = 0,rn ;rn if(connect(c, (struct sockaddr *)&addr, rn sizeof(addr)) < 0)rn perror("connect");rn return -1;rn rn int id = 0;rn #define MAX 1024rn char buf[MAX];rn int size;rn while(1)rn snprintf(buf, MAX, "NO.%d: hello world", id++);rn size = strlen(buf);rn if (0 >= send(c, buf, size, 0))rn printf("Send fail!\n");rn break;rn rnrn printf("send: [%dbytes]: %s\n", size, buf);rn sleep(1);rn rn close(c);rn return 0;rnrnrn[/code]rnrn测试结果:rn[img=https://img-bbs.csdn.net/upload/201508/30/1440904845_818545.jpg][/img]
文件描述符
liunx设计思想就是一切皆<em>文件</em>,网络是<em>文件</em>,键盘等外设也是<em>文件</em>,所有的资源统一的接口,开发者可以像写<em>文件</em>那样通过网络传输<em>数据</em>,可以通过/proc/的<em>文件</em>看到进程资源的使用情况。 内核给每个访问的<em>文件</em>分配了<em>文件</em><em>描述符</em>,它本质是一个非负整数,在打开或者新建<em>文件</em>时返回,以后读写<em>文件</em>都要通过这个<em>文件</em><em>描述符</em>。简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程 posix定义了stdi
Linux文件描述符(特别概念三)
1、某个程序打开<em>文件</em>时,操作系统返回相应的<em>文件</em><em>描述符</em>,程序为了处理该<em>文件</em>必须引用此<em>描述符</em> 2、一个进程启动时,都会打开三个<em>文件</em>,标准输入、标准输出、标准出错处理。 3、三个<em>文件</em>所对应的<em>文件</em><em>描述符</em>分别为0、1、2,也就是宏替换STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO。 4、函数scanf()使用stdin,函数printf()使用stdout 5、用不
Linux讲解 基础IO 文件描述符
   上次我们介绍了Linux中基础IO的系统调用,这次我们介绍的是<em>文件</em><em>描述符</em>。    <em>文件</em><em>描述符</em>是我们之前所没有接触到的一个名词。内核是利用<em>文件</em><em>描述符</em>来访问<em>文件</em>。<em>文件</em><em>描述符</em>是非负整数。打开现存<em>文件</em>或新建<em>文件</em>时,内核会返回一个<em>文件</em><em>描述符</em>。读写<em>文件</em>也需要使用<em>文件</em><em>描述符</em>来指定待读写的<em>文件</em>。但是<em>文件</em><em>描述符</em>这个概念是只有在Linux和unix才有。    在Linux下有一句话是一切皆<em>文件</em>,<em>文件</em><em>描述符</em>...
Linux select 文件描述符1024限制
最近系统出现宕机的情况,分析core<em>文件</em>,所有的线程都在select处。 最后怀疑是<em>文件</em><em>描述符</em>超过了1024。但是想到Apache也是采用select的io模型。所以还是很不理解。 查看了Linux的内核源码<em>linux</em>-2.6.32。 static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp) {
linux 可打开的文件描述符
一个进程可同时打开的<em>文件</em>个数是有限的,这个限制是在/etc//security/limits.conf<em>文件</em>中设置的。 程序为了处理该<em>文件</em>必须引用此<em>描述符</em>。所谓的<em>文件</em><em>描述符</em>是一个低级的正整数。最前面的三个<em>文件</em><em>描述符</em>(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。因此,函数 scanf() 使用 stdin,而函数 printf() 使用 stdo
[Linux] 文件描述符和打开文件之间的关系
前言 <em>文件</em><em>描述符</em>、<em>文件</em>句柄和i-node之间的关系,应该是Linux Native Programming的基本功。Golang、C++11写久了之后,这些概念有些淡忘,今天顺便梳理下。 铺垫 为了搞清楚这当中的关系,我们首先要了解内核维护的3个<em>数据</em>结构: 进程级的<em>文件</em><em>描述符</em>表 系统级的打开<em>文件</em>句柄 <em>文件</em>系统级的i-node表 进程级的<em>文件</em><em>描述符</em>表 单条表项,包括: <em>文件</em><em>描述符</em>标志,如clo...
Linux系统编程系列笔记之文件描述符
定义: 对于内核而言,任何对<em>文件</em>的操作都是对<em>文件</em><em>描述符</em>的引用,它是一个非负整数;例如前三个整数(0,1,2)分别代表(括号里为宏表示):标准输入(STDIN_FILENO),标准输出(STDOUT_FILENO),错误输出(STDERR_FILENO),;而当我们创建一个<em>文件</em>时系统会给我们一个未使用的最小的整数来引用<em>文件</em>,该整数大小为0~OPEN_MAX在Linux中为1024,即可以同时打开...
Linux深入了解文件描述符文件结构
<em>文件</em><em>描述符</em> 有句经典的话是:Linux下一切皆<em>文件</em>。它最简单的总结了Linux的特点,Linux下<em>文件</em>被分为普通<em>文件</em>、目录<em>文件</em>、链接<em>文件</em>和设备<em>文件</em>。在Linux下显示器、键盘等都会被看成是一个<em>文件</em>、而所有的<em>文件</em>就是通过<em>文件</em><em>描述符</em>来管理的。 举个栗子:一个Linux操作系统就相当于一本很厚很厚的书,书的每一页都是由<em>文件</em>构成的(包括我们的显示器键盘等,就有专门的页码,在那一页上查看就相当于显示器或...
浅谈 Linux 下的文件描述符 fd fp
<em>文件</em><em>描述符</em>: 是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开<em>文件</em>的记录表。当某个程序打开<em>文件</em>时,操作系统返回相应的<em>文件</em><em>描述符</em>,程序为了处理该<em>文件</em>必须引用此<em>描述符</em>。所谓的<em>文件</em><em>描述符</em>是一个低级的正整数。最前面的三个<em>文件</em><em>描述符</em>(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。因此,函数 scanf() 使用 stdin,而函数
Linux子进程继承父进程的文件描述符
Linux子进程可以很方便地继承父进程的<em>文件</em><em>描述符</em>
linux文件描述符和打开文件之间的关系
要理解<em>文件</em><em>描述符</em>和打开<em>文件</em>之间的关系,了解内核维护的一下三个<em>数据</em>结构是很有必要的:1.进程级的<em>文件</em>描述表,(open file description)就是我们常常在代码中使用的int fd变量,由open函数返回。2.系统级的打开<em>文件</em>表,这是内核对所有打开<em>文件</em>维护的一个描述表格,将表格中的每一项称为打开<em>文件</em>句柄。它存储了一个打开<em>文件</em>的所有相关信息,例如当前<em>文件</em>的偏移量,访问模式,状态等等。3.i...
Linux(三)文件描述符和FILE结构体
<em>文件</em><em>描述符</em> 在我们介绍<em>文件</em><em>描述符</em>之前。我们先来看一下 系统调用接口:write,read,close,open,lseek,下面我们来尝试用下open系统调用接口。 我们可以看到,我们通过open创建一个<em>文件</em>给它权限0644 接下来我们写一个while循环通过write系统调用将我们的msg写进myfile这个<em>文件</em>里 open参数的介绍: O_RDONLY:只读打开 O_WR...
Linux中对文件描述符的操作
fd_set结构体 在Linux中,内核利用<em>文件</em><em>描述符</em>(File Descriptor)即<em>文件</em>句柄,来访问<em>文件</em>。<em>文件</em><em>描述符</em>在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开<em>文件</em>的记录表。打开现存<em>文件</em>或新建<em>文件</em>时,内核会返回一个<em>文件</em><em>描述符</em>。读写<em>文件</em>也需要使用<em>文件</em><em>描述符</em>来指定待读写的<em>文件</em>。宏FD_ZERO、FD_SET、FD_CLR、FD_ISSET中“FD”即为
Linux中文件描述符与FILE结构体
<em>文件</em><em>描述符</em>  我们知道在Linux系统中一切皆<em>文件</em>,<em>文件</em>的类型也是多种多样的,有普通<em>文件</em>,目录<em>文件</em>,链接<em>文件</em>。而当系统需要调用<em>文件</em>时,又是如何进行操作的,而<em>文件</em><em>描述符</em>就是因此而诞生的,<em>文件</em><em>描述符</em>(file descriptor)是内核为了高效管理已被打开的<em>文件</em>创建的索引。<em>文件</em><em>描述符</em>的操作返回的是一个<em>文件</em><em>描述符</em>,内核会在每个进程空间中维护一个<em>文件</em>描述表,所有打开的<em>文件</em>都将通过此表中的<em>文件</em><em>描述符</em>来引用。
linux—dup和dup2重定向文件描述符
【dup】
数据和目的数据的问题
原<em>数据</em><em>串</em>可以使用的段寄存器是DS,CS,ES,SS,偏移SIrn目的<em>数据</em><em>串</em>可以使用的段寄存器ES,偏移DIrn我在看杨季文 老师的《汇编语言程序设计教程》的时候上面的定义我不太明白rn杨老师还有个代码rn1.MOV [SI],AXrn这里为什么SI可以作为目的呢?SI不是作为源<em>数据</em><em>串</em>的吗?为什么可以这样呢?rn2.还有在这页里还有个问题。(25页最上面的2个语句)rnMOV [BP],CX ;引用段寄存器BPrn??rn怎么BP成段寄存器了呢?rn希望朋友们帮助解答rn
【Linux】基础I/O 文件描述符
<em>文件</em><em>描述符</em>1.<em>文件</em>I/O操作函数
Linux 文件描述符(file descriptor, fd)以及文件描述符操作dup(), dup2()
<em>文件</em><em>描述符</em>(file descriptor, 简称fd)是Linux内核所创建的索引,其目的为了高效管理已被打开的“<em>文件</em>”。其实,<em>文件</em><em>描述符</em>就是一个非负整数(通常是小整数),用于指代被打开的“<em>文件</em>”,而所有对该“<em>文件</em>”的I/O操作都是通过该<em>文件</em><em>描述符</em>来执行的。
每个线程都进行申请文件描述符的操作的话,会不会发生文件描述符申请冲突
比如线程a所连接远程服务器的socket为18,同时b所连接的也是18。如此造成<em>冲突</em>?
数据十六进制显示
字符<em>串</em>按照十六进制进行格式化显示
解析json数据
谁帮我解析下json<em>串</em>,举个例子'ID':153,'AccountName':'PGENERAL\\yanping.lin','Code':'1239','Type':1,'TypeName':'自己','Name':'LinYanPing'rn解析 放实体类,然后控制台打印
Struts2的数据问题
在使用spring加struts2的架构时,当访问用户多的时候老出现<em>数据</em><em>串</em>的情况啊!最后加scope=&quot;prototype&quot;避免struts中Action的线程安全问题 spring 默认scope 是单例模式这样只会创建一个Action对象每次访问都是同一个Action对象,<em>数据</em>不安全struts2 是要求 每次次访问 都对应不同的Actionscope=&quot;prototype&quot; 可以保证 当...
数据结果(五)
<em>串</em>的定义:由零个或多个字符组成的有限序列,又名叫字符<em>串</em>。<em>串</em>的比较:参考英文字典的排序。<em>串</em>的顺序存储结构和<em>串</em>的链式结构。 <em>串</em>的链式结构:规定一个结点存入多少个字符,最后的空间指向下一个节点,用#来填充未用的字符。设一片文章为M,要匹配的字符<em>串</em>是m 朴素的模式匹配算法:最简单直观的匹配算法,从M的第0个字符开始,匹配m是否能够匹配成功,如果匹配不成功则从M的下个字符开始匹配,一次进行。后来人们发现按
数据结构数组与
知识要点: <em>串</em>的基本概念、<em>串</em>的存储结构和相关的操作算法; 数组的存储结构,在顺序存储的情况下,数组元素与存储单元的对应关系; 稀疏矩阵的存储结构和特点以及基本操作。 字符<em>串</em>匹配算法(例如KMP算法)。 <em>串</em>的定义:由一个或多个字符组成的有限序列;内字符的个数称之为<em>串</em>的长度,字符个数为0的称之为空<em>串</em>。 <em>串</em>的比较:1)长度相同       2)对应位置上的元素也相同; 重点 <em>串</em>的模式匹配算...
Linux 提供的基于文件描述符的定时器接口
#include rnrn int timerfd_create(int clockid, int flags); rn int timerfd_settime(int fd, int flags, rn const struct itimerspec *new_value, rn struct itimerspec *old_value); rn int timerfd_gettime(int fd, struct itimerspec *curr_value);rnrn不是说这个定时器,支持 select(2) 之类的吗,为什么我用select就接收不到定时器的超时信号。rn而直接 read却能收到定时器的信号???rnrn
Linux基础IO--文件描述符fd/重定向
在学习<em>文件</em><em>描述符</em>之前,我们先来看一点其它相关的知识点。我们都知道,对一个<em>文件</em>我们可以进行打开、读、写、关闭操作,在我们没有接触Linux之前,将信息输出到显示器上,我们通常能想到的方法有以下几种:#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;string.h&amp;gt; int main() { char *msg = &quot;hello world!\n&quot;; fwrite(...
Linux中文件描述符 fd 与 FILE 结构体
Linux中<em>文件</em><em>描述符</em> fd 与 flie 结构体 <em>文件</em><em>描述符</em> <em>文件</em><em>描述符</em>(file descriptor)是内核为了高效管理已被打开的<em>文件</em>创建的索引。<em>文件</em><em>描述符</em>的操作返回的是一个<em>文件</em><em>描述符</em>,内核会在每个进程空间中维护一个<em>文件</em>描述表,所有打开的<em>文件</em>都将通过此表中的<em>文件</em><em>描述符</em>来引用。(在前面的 系统 I/O中有画图解释) <em>文件</em><em>描述符</em> fd 与 FILE 结构体 fd 是一个非负整数,在调...
Linux:文件描述符,深度理解重定向(dup2)
<em>文件</em><em>描述符</em>详解,深度理解重定向本质 通过C语言我们知道,C语言中对<em>文件</em>操作的库函数有fopen,fclose,fread,fwrite,在进行<em>文件</em>IO操作时会默认打开三个输入输出流,分别是stdin、stdout、stderr,这三个流的类型都是FILE*,是一个<em>文件</em>指针。 那么在系统调用层也有对应的接口对<em>文件</em>进行操作,open,close,read,write,我们称为系统调用接口。 在操作系统...
Linux中文件描述符fb和文件指针FILE*的区别
1.<em>文件</em><em>描述符</em>: <em>linux</em>中,当一个进程打开一个<em>文件</em>或者是创建一个新<em>文件</em>时,内核向进程返回一个<em>文件</em><em>描述符</em>来标示该<em>文件</em>。<em>文件</em><em>描述符</em>是一个非负整数,实际上它是一个索引,指向内核为进程所维护的一个<em>文件</em>记录表。 任何程序运行起来都会打开三个默认的流,标准输入流,标准输出流,标准错误流通常情况下对应的硬件为键盘,显示器,显示器。 三个流的<em>文件</em>标示符为 0,1,2 因为默认的三个流已经设置好,后
linux系统编程学习一——IO(文件描述符
        当某个程序打开<em>文件</em>时,操作系统返回相应的<em>文件</em><em>描述符</em>,程序为了处理该<em>文件</em>必须引用此<em>描述符</em>。所谓的<em>文件</em><em>描述符</em>是一个低级的正整数。最前面的三个<em>文件</em><em>描述符</em>(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。因此,函数 scanf() 使用 stdin,而函数 printf() 使用 stdout。你可以用不同的<em>文件</em><em>描述符</em>改写默认的设置并重定向...
Linux笔记(12)-文件描述符相关操作
dup和dup2函数:复制<em>文件</em><em>描述符</em> 1. <em>文件</em><em>描述符</em>表(fd的标号),其中0,1,2默认被占用。 2. 复制<em>文件</em><em>描述符</em>指:复制后产生的两个<em>文件</em><em>描述符</em>可以操作同一个<em>文件</em> 3. 函数原型: a. int dup(int oldfd); dup会将oldfd复制一份到当前<em>文件</em><em>描述符</em>表中未被占用的最小的<em>文件</em><em>描述符</em>上 -- 返回值为复制的<em>文件</em><em>描述符</em> ...
数据的问题
请教各位大虾:rnrn <em>数据</em><em>串</em>A = "13905308888 rn 13905309999 rn 13805306666"rnrn 用什么代码可以将A中的"0530"换成"1234" rnrnrn谢谢
口中数据处理问题!!!
小弟我最近做一个关于<em>串</em>口通信的东西,rn读入<em>数据</em>为1秒50次,在读入<em>数据</em>的事件里面要进行<em>数据</em>处理,rn要处理的<em>数据</em>为刚开始接收的第一个<em>数据</em>到目前的最后一个<em>数据</em>,所以跑的时间长了,就报错:存储空间不足之类,代码简单如下:rnvoid __fastcall TMainFrm::MIDCOMM1GetValue(TObject *Sender,rn AnsiString cValue)//读入<em>数据</em>是rnrn int nPos;rn AnsiString cAnaly;rn cInput = cValue;rn nPos = cInput.Pos("\r");rn double Value;rn double ImageWidth = Image1->Width,ImageHeight = Image1->Height;rn TColor myColor = ColorStyle(MeasureIndex+1);rn while(nPos > 0)rn rn cAnaly = cInput.SubString(1,nPos-1);rn cInput = cInput.Delete(1,nPos);rn nPos = cInput.Pos("\r");rn if(!StartFlag || cAnaly.SubString(0,2) != "NA")//在开始情况下,且<em>数据</em>前两位为"NA"开头,如NA+12.34rn rn return;rn rn PointsIndex++;//已经接到的<em>数据</em>数rn Value = StrToFloat(cAnaly.SubString(3,cAnaly.Length()-2));//去掉前缀"NA"rn if(Value > SetFrm_MaxValue)//最大最小值判定rn rn SetFrm_MaxValue = Value;rn rn else if(Value < SetFrm_MinValue)rn rn SetFrm_MinValue = Value;rn rn ScaleX = (ImageWidth-40)/PointsIndex;//固定显示范围rn ScaleY = (ImageHeight-2*CordnatTop)/(SetFrm_MaxValue-SetFrm_MinValue);rn OriginY = CordnatTop+ScaleY*SetFrm_MaxValue;rn HidingGrid->Cells[MeasureIndex+1][PointsIndex] = AnsiString(Value);rn myvector[MeasureIndex].push_back(Value);//存储<em>数据</em>,链表rn rn //图形显示<em>数据</em>,横坐标为数目,众坐标为值,rn AreaBitmap->Assign(NULL);rn AreaBitmap->Height = ImageHeight;rn AreaBitmap->Width = ImageWidth;rn AreaBitmap->Canvas->Pen->Color = clBlack;rn AreaBitmap->Canvas->MoveTo(OriginX,OriginY);rn AreaBitmap->Canvas->LineTo(ImageWidth-1,OriginY);rn AreaBitmap->Canvas->Pen->Color = myColor;rn for(int i = 1;iCanvas->MoveTo(Pos[0].x,Pos[0].y);rn AreaBitmap->Canvas->LineTo(Pos[1].x,Pos[1].y);rn Pos[i%2] = Point(OriginX+ScaleX*i,OriginY-ScaleY*myvector[MeasureIndex].at(i-1));rn AreaBitmap->Canvas->MoveTo(Pos[0].x,Pos[0].y);rn AreaBitmap->Canvas->LineTo(Pos[1].x,Pos[1].y);rn AreaBitmap->Canvas->Pixels[Pos[0].x][Pos[0].y] = myColor;rn AreaBitmap->Canvas->Pixels[Pos[1].x][Pos[1].y] = myColor;rn rn AreaBitmap->Canvas->Pen->Color = clBlack;rn Image1->Picture->Bitmap->Assign(AreaBitmap);//贴上rn Pos[0] = Pos[1] = Point(OriginX,OriginY);rn rn//-----------------------------------------------------------------------------------------------------------rn要的时候这边还在跑,端口已经要激发这个事件了,我怎么办??rn哭!!T_T
跨平台C++服务器程序开发 (3)Linux文件描述符
Linux<em>文件</em><em>描述符</em>在Linux系统中几乎所有可读写的对象都可视为<em>文件</em>,比如标准输入输出、磁盘<em>文件</em>、套接字、管道等,都可以用read函数读取<em>数据</em>,用write函数写入<em>数据</em>。 这一点相对于Windows系统来说更加统一,在Windows系统中上面列举的每个对象都有其专门的一组函数读写。 下面分别描述这几种<em>文件</em>对象。标准输入输出在C语言中,printf向控制台窗口输出信息,scanf从控制台窗口输入信
linux编程基础3-文件描述符相关知识
1.每个进程有一个task_struct, 在task_struct里有一个指针struct files_struct *files,指向的file_struct结构体成为<em>文件</em><em>描述符</em>表(FDT) 2.已经打开的<em>文件</em>在内核中用file结构表示,file结构里包含有File Status Flag(f_flags),读写位置(f_pos),引用计数(f_count),等等, 还有一个指向file_o
Linux IO基础——文件描述符/inode节点/动态库
<em>文件</em>操作 打开<em>文件</em> 关闭<em>文件</em> 读<em>文件</em> 写<em>文件</em> <em>文件</em><em>描述符</em> 进程与<em>文件</em><em>描述符</em> 目录操作 生成静态库 生成动态库 动态库运行时加载探究 <em>文件</em>操作 包含头<em>文件</em> fcntl.h 打开<em>文件</em> int open(const char *pathname, int flags); flag:(O_RDONLY,O_WRONLY ,O_RDWR )| ( O_APPEND, O_C...
【Linux】浅析文件描述符fd与文件指针FILE*
我们先来回顾几个代码。。。。。在C语言中往一个<em>文件</em>中写入内容我们这样写(C<em>文件</em>接口)int main() { FILE* fp = fopen(&quot;myfile&quot;, &quot;r&quot;); //原型:FILE *fopen(const char *path, const char *mode); if (!fp) { printf(&quot;fopen error\n&quot;); } const...
中英文的数据
我做的网站分中英文两版,产品需要分类,可是英文版后台的分类<em>数据</em>是中文版库里的内容,而且只要一修改分类,中文版的<em>数据</em>库就会被锁,而中英文各版的前台显示都正常,不知道大家有没有遇到过这样的情况,请帮忙
C语言下的FILE指针与Linux的文件描述符
FILE*:它是C库中定义的一个结构体指针,我们在C语言<em>文件</em>操作时打开一个<em>文件</em>返回的指针类型就是它,在C库中是这样定义的,其中的_file它是一个整数,就是作为<em>文件</em>索引的<em>描述符</em>,C库是建立在系统调用上的,这个FILE结构体可以说是一个包装,底层还是用<em>文件</em><em>描述符</em>对磁盘上的<em>文件</em>进行连接的。<em>文件</em><em>描述符</em>:在<em>linux</em>系统中每打开一个<em>文件</em>就会获取一个<em>文件</em><em>描述符</em>,他是一个小整数,在lin...
redhat linux 8.0下的传送文件描述符的问题
为什么子进程收不到呢???rnrn#include "ourhdr.h"rnrnint main(void)rnrn int fdpipe[2], fd, n;rn pid_t pid;rn char line[MAXLINE];rn struct msghdr msg;rn struct iovec iov[1];rn char cmsg[CMSG_SPACE(sizeof(int))];rn struct cmsghdr *cmptr;rn rn memset(&msg, 0, sizeof(msg));rn memset(cmsg, 0, sizeof(cmsg));rn msg.msg_control = cmsg;rn msg.msg_controllen = sizeof(cmsg);rnrn if(socketpair(AF_UNIX, SOCK_STREAM, 0, fdpipe) < 0)rn err_sys("socketpair error");rnrn if((pid = fork()) < 0)rn err_sys("fork error");rn else if(pid > 0)rn rn close(fdpipe[0]);rn if((fd = open("transfd.tmp", O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) < 0)rn err_sys("parent: open error");rn if(write(fd, "hello world!\n", 13) != 13)rn err_sys("parent: write error");rn lseek(fd, 0, SEEK_SET);rnrn cmptr = CMSG_FIRSTHDR(&msg);rn cmptr->cmsg_level = SOL_SOCKET;rn cmptr->cmsg_type = SCM_RIGHTS;rn cmptr->cmsg_len = CMSG_LEN(sizeof(int));rn *(int *)CMSG_DATA(cmptr) = fd;rn if(sendmsg(fdpipe[1], &msg, 0) != 0)rn err_sys("parent: sendmsg error");rn close(fd);rn close(fdpipe[1]);rnrn if(waitpid(pid, NULL, 0) != pid)rn err_sys("parent: waitpid error");rn rn elsern rn close(fdpipe[1]);rn iov[0].iov_base = line;rn iov[0].iov_len = sizeof(line);rn msg.msg_iov = iov;rn msg.msg_iovlen = 1;rn if(recvmsg(fdpipe[0], &msg, 0) != 0)rn err_sys("child: recvmsg error");rn printf("child: len = %d\n", msg.msg_controllen);rn if((cmptr = CMSG_FIRSTHDR(&msg)) == NULL || cmptr->cmsg_len != CMSG_LEN(sizeof(int)))rn err_quit("child: not received fd");rn cmptr = CMSG_FIRSTHDR(&msg);rn fd = *(int *)CMSG_DATA(cmptr);rnrn while((n = read(fd, line, MAXLINE)) > 0)rn rn if(write(STDOUT_FILENO, line, n) != n)rn err_sys("child: write error");rn rn rnrn exit(0);rnrnrnrn
程序设计实践.rar下载
本书是Brian W. Kernighan和Rob Pike合著的最新力作。本书从排错、测试、性能、可移植性、设计、界面、风格和记法等方面,讨论了程序设计中实际的、又是非常深刻和具有广泛意义的思想、技术和方法,它的翻译出版将填补国内目前这方面书籍的空白。本书值得每个梦想并努力使自己成为优秀程序员的人参考,值得每个计算机专业的学生和计算机工作者阅读,也可作为程序设计高级课程的教材或参考书。 相关下载链接:[url=//download.csdn.net/download/sadhorse/1967041?utm_source=bbsseo]//download.csdn.net/download/sadhorse/1967041?utm_source=bbsseo[/url]
javascript页面之间传值下载
本实例介绍的是如何把值从父窗口和子窗口之间进行相互传递,而且介绍了两种方式都可以实现效果. 相关下载链接:[url=//download.csdn.net/download/tengdazhang770960436/3810263?utm_source=bbsseo]//download.csdn.net/download/tengdazhang770960436/3810263?utm_source=bbsseo[/url]
EBWin3.04_汉化+教程+外字包补丁下载
学日语的都知道的字典,汉化补丁和用法,自己看吧同学! 相关下载链接:[url=//download.csdn.net/download/suchlight/3927544?utm_source=bbsseo]//download.csdn.net/download/suchlight/3927544?utm_source=bbsseo[/url]
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表
我们是很有底线的