日期:2014-05-16  浏览次数:20676 次

郁闷的问题
前段面试突然被问到open\fopen\popen有什么相同点和不同点。

突然发现自己根本没注意过,无语呀。

------解决方案--------------------
http://community.csdn.net/expert/topicview1.asp?id=4977446
------解决方案--------------------
fopen\open,
open:直接操作物理设备,比如磁盘、设备文件
fopen:则通过缓冲区来操作,读写都在缓冲区上
一般设备/设备文件都通过open来操作

popen:会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来执行参数command的指令
依照popen参数中的type值建立管道连接到子进程的输入/输出设备中,通过返回的指针对子进程
的输入、输出设备进行操作。
------解决方案--------------------

hearterlaker(梦归何处)

fopen\open,
open:直接操作物理设备,比如磁盘、设备文件
fopen:则通过缓冲区来操作,读写都在缓冲区上
一般设备/设备文件都通过open来操作

=======

nod
APUE也是这么说的
------解决方案--------------------
open实际上系统调用.
fopen是标准C
popen 是POSIX.2定义的.用来执行其他程序的,类似与system.或exec.区别在与他返回一个文件指针,这样就可以通过该文件指针来读取程序的返回值。