apue

DNA图谱 / 问答 / 标签

反绕文件是什么意思?APUE里边看到的,不太理解。

就是rewind,他其实就是读取文件,读取文件不是经常需要调整文件指针的位置吗,rewind就是把文件指针放到文件开始处。如果你以前打开过,并且读取了几条,调用它就会又从第一条开始读取。

cpu:AMDFusionAPUE1-1200,集成AMD Radeon HD 7310 显卡,2G1333内存,是否可以轻松运行win7 32位系统?

从这个WIN7运行的环境来说,这个配置肯定能装,但是另一方面,从这个笔记本的CPU主频来看,速度不是很快,才1.6-2.0G之间,想台式机的话,主频一般2.5以上了。所以,如果你想在WIN7下玩什么网络游戏或者做设计,有点难。

本人是小白,请问UNIX书中./a.ou是什么文件,还有“apue.h“头文件是自己写的吗?程序写在vi里怎么运行?

关于./a.out以C语言为例,linux下假设有test.c文件,gcc编译后(不加-o)选项默认生成的可执行文件名就是a.out,也就是说a.out文件是一个可执行文件。./a.out表示执行该可执行文件apue.h是自己写的,《UNIX环境高级编程》中附录B(677页)中有源码假设你用vi编辑了一个test.c文件,计算机是无法直接读懂该文件的,细说的话要经过预处理、编译、汇编、链接等操作后才生成计算机能读懂的文件,也就是我刚才说的可执行文件那种。对于C初学者,你需要借助编译器gcc:$gcc test.c执行这个命令后再当前目录下执行ls,会发现多了一个a.out的可执行文件,然后执行./a.out就可以运行程序了。gcc可以加上-o选项,如:$gcc test.c -o test.exe-o选项表示指定生成文件的名称。gcc还有很多选项,深入学习的话可以百度或者gcc -help之类的命令查看

apue图4-21程序错误提示incompatible types when assigning to type struct timespec fom type _time_t

大字符反复反复反复反复

APUE读书笔记-15进程内部通信(5)

三种类型的XSI IPC:消息队列,信号量,和共享内存,有许多共同点。这里将讨论这些共同的特性,后面会依次讨论它们的各自的特性。 XSI的IPC函数基于System V的IPC函数。这三种类型的IPC起源于1970s的一个被称作"Columbus UNIX"的内部AT&T的UNIX版本。后来这三种类型的IPC被添加到System V中。它们不使用文件系统的命名空间而是使用自己的标准的命名空间。 我们应当知道(前面的表格中也说了):消息队列,信号量和共享内存被定义为Single UNIX Specification的XSI扩展。 内核中的每个IPC的结构(消息队列,信号量或者共享内存段),通过一个非负的整数来引用。例如当发送或者从一个消息队列中接收消息的时候,我们所知道的就只是这个队列的标识。和文件描述符号不同,IPC的标识不是一个小的整数。实际上,当创建并且移走一个IPC结构的时候,相应的标识符号会连续地增加,知道它到达一个最大的正整数值,然后又回归到0。 标识只是一个IPC对象的内部名字。协作进程需要一个外部名字策略以便能够使用IPC对象进行交互。为了实现这个目的,IPC对象和一个关键字进行关联,这个关键字的作用就像是一个外部的名字一样。 当创建一个IPC结构的时候(通过调用msgget, semget, 或 shmget),必须指定一个关键字。关键字的类型是key_t,它是在头文件<sys/types.h>中被定义的一个长整数类型。这个关键字在内核里面被转换成一个标识。 对于一个客户和服务,有许多种不同的方法来使用同一个IPC结构。 返回:如果成功返回关键字,如果失败返回(key_t)-1。 这里的path参数必须引用一个已经存在的文件名称,而参数id则只使用它的低8位来生成关键字。 ftok创建的关键字,一般是通过path对应的文件的stat结构的st_dev和st_ino成员结合project ID,来进行生成的。如果指定两个不同的path,那么ftok通常会返回两个不同的关键字。然而由于i-node成员和关键字都是通过长整型来存储的,所以在创建关键字的时候必然会丢失一些信息(关于索引节点的唯一性的信息),这意味着如果两个不同的路径名,如果指定的project id是相同的话,也是有可能会产生同样值的关键字的。 三个get函数(msgget,semget和shmget)都有两个类似的参数:一个关键字和一个整数标记。 当一个 新的IPC结构被创建 (通常是服务进程创建)的时候,通常是由如下情况导致: 如果想要引用一个已经存在的队列(通常是客户进程引用),关键字必须要和创建该队列时候的关键字一样并且没有指定IPC_CREAT标记。 需要注意的是,我们不可能通过IPC_PRIVATE关键字来引用一个已经存在的queue,因为这个特殊的关键字值会创建一个新的queue。为引用一个已经存在的使用关键字IPC_PRIVATE创建的queue,我们必须知道相应的表示,然后在其他的IPC调用中(例如msgsnd和msgrcv)使用那个标识,而不是通过get函数来获得标识。 如果我们想要创建一个新的IPC结构变量,那么我们需要确保我们不会引用一个使用同样表示的已经存在的IPC结构变量,我们必须同时设定IPC_CREAT和IPC_EXCL位的标记。使用这个方法,当已经存在了那个IPC结构的时候,会导致返回一个EEXIST错误(这个情况就类似使用指定了O_CREAT和O_EXCL标记的open函数)。 XSI的IPC结构和一个ipc_perm结构相关联,这个结构定义了权限和属主,并且至少包含了如下的成员: 每种实现都包含了额外的成员,可以通过查看你系统上面的<sys/ipc.h>文件来了解完整的定义。 当建立IPC的时候,所有的成员都会被初始化。之后,我们可以通过调用msgctl,semctl,或者shmctl来修改uid,gid,和mode成员。为了能够改变这些值,调用进程必须是IPC结构的创建者或者是超级用户。修改这些成员和给一个文件调用chown或者chmod类似。 mode成员的值和<sys/stat.h>中定义的文件访问权限很类似,但是对于任何的IPC结构没有相应的执行权限。同时,消息队列和共享内存使用read和write但是信号量使用read和alter。下表展示的就是每种IPC形式的六个权限: 有一些实现定义了一些常量来表示这些权限,但是这些都没有被Single UNIX Specification标准化。 我们可以看到,所有三种形式的XSI IPC都有内部的限制。所有这些限制可以通过内核来进行配置,我们后面讲到每一种IPC的时候,将会对这些限制进行描述。 每个平台提供了它自己的显示和修改特定限制的方法。FreeBSD 5.2.1,Linux 2.4.22,和Mac OS X 10.3提供了sysctl命令来查看和修改内核配置参数。Solaris 9可以通过修改文件/etc/system然后重新启动来修改内核的配置参数。 在Linux上面,呢可以通过运行"ipcs -l"来查看IPC相关的限制。在FreeBSD上,相应的命令是"ipcs -T"。在Solaris上,你可以运行sysdef -i来查看可以调节的参数。 (内容不会被及时释放)XSI IPC的一个基本问题就是IPC结构是系统范围内的,没有一个引用计数。例如,如果我们创建了一个消息队列,将一些消息放到这个队列上面,然后终止进程,那么消息队列和它的内容并不会被删除。它们会保留在系统中,直到其它进程调用msgrcv或者msgctl进行特定的读取或删除,或者通过执行ipcrm命令,或者通过系统的重新启动。与pipe相比,pipe会在最后一个引用它的进程结束的时候完全地被移除。对于FIFO,尽管管道的名字在文件系统中保留着(以管道文件的形式),但是FIFO中保留的任何数据会在最后一个引用该FIFO的进程结束的时候被移走。 (无法像文件那样直观)另外一个XSI IPC的问题就是,这些IPC结构不是通过在文件系统中的名字被知道的。我们无法通过前面的函数来访问和修改它们。有许多系统调用(msgget,semop,shmat,等等)被添加到内核中以便支持这些IPC对象。我们无法通过ls命令来查看IPC对象,我们无法通过rm命令来删除它们,我们也无法通过chmod命令来修改它们的权限。然而,有两个命令"ipcs"和"ipcrm"被加入了进来,可以实现类似的功能。 (无法进行高级的文件操作)因为这些IPC不能使用文件描述符号,所以我们不能构对它们使用多I/O函数(select和poll函数)进行操作。这使得我们同时使用多个IPC结构或者通过文件或者设备I/O使用任何这些IPC结构变得非常的困难。例如,我们无法有一个服务进程不经过忙等待的循环方式等待消息被放到两个消息队列中的一个上面。 还有更多关于有点和缺点的讨论或者争辩,这里就不一一列举了。同时有一个描述各种IPC特性的表格,这里也不列出了。具体参见参考资料。 后面将会对三种IPC分别进行详细的讲解。 参考: APUE2/ch15lev1sec6.html

面试官让我回去看看apue,unp,mysql是什么意思

都是编程很基础的东西, APUE是工具书, UNP是网络基础, Mysql是当下炙手可热的数据库, 很多后台都在用, 值得学习。

Linux系统应用与开发教程 与APUE有什么区别啊?

光看名字的话很难说清楚,按照之前看过的一些书讲下我的理解吧。1 UNIX环境高级编程 是圣经级别,结合操作系统的资源和特性来描述API,并且会给出差异化的例子来对比,涵盖了unix的文件/进程/信号/相关的编程及注意事项,必读书籍。2 APUE正如其名,是基于unix的,现在的linux已经发展到3.x了,原有的一些APUE描述实现已经有所变化,也发展了很多linux特定的应用。基于linux的程序设计书籍是很必须的,但是作者能不能达到steven的水平让人担心,所以现在都说RTFS(read the fucking source)是很有道理的。3 你提到的linux 系统应用与开发教程,不知道具体内容是什么,估计也脱不了APUE的架子,你注意看看对应的教程是不是写着“编著”,这个跟APUE的“著”是差别很大的。学校里的教程基本上就是带着你走一遍教材,教材不会有很出彩的地方(经典的已经摆在那里了,无法超越),老师的授课方式和你的接受能力才是关键,不要抠着这几个名字不放,课照上,书照读,都不耽误。

apue 例子可以用c++写么

apue是Unix环境下的高级编程,Linux下编程都是用C,像APUE这种网络开发都是直接用的C的API,而C++基本是用在跨平台的Linux做服务器,一般多用于PHP、JSP之类的服务器建设与开发。C++主要用于软件开发(现在Linux软件通过之前说的QT开发,当然很多通过C开发的,不然C也不会基本排名第一了)及底层开发(如基于Linux的Android底层),建设服务器貌似不是C++的强项,涉及到网络的应用软件开发倒还可以

面试官让我回去看看apue,unp,mysql是什么意思

如果不知道一个术语什么意思 请先学会使用谷歌另外反对高票回答所说的装逼论 因为APUE这样的经典书国外很多时候为了方便简单也是这样叫的 甚至他们的网站都是APUE既然是大家约定俗成的一个名字 感觉无所谓装逼 虽然也有可能 但这样揣测人家其实是理论不充分的那如果还是执意认为外国人不说首字母简写的话 再举两个栗子大名鼎鼎的SICP Welcome to the SICP Web Site 网页标题直接就说欢迎来SICP网站了另外一个CSAPP CS:APP2e, Bryant and O"Hallaron 同理 退步说,即使外国人不这么叫,中国内部的程序员圈子这么叫就是山寨就是装b么,只要指代准确,广泛认可,没什么不好的Life is short,何必非得跟着“老外”的叫法叫。