方法如下:
1、在windows下如c盘data目录下创建脚本,名字为:exec.sql,内容为:set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool 路旅蠢闷径+文件名
select col1||','||col2||','||col3||','||col4||'..' from tablename
spool off
*** 作系统知道文件戚宴描述符对应的设备是否可读,所以实际是由内核提供系统调用差仔罩来真正实现 select 的。一般对于通过 fopen *** 作的文件,我们没必要用 select, 首先你要把 FILE * 转成对应的文件描述符,其次对于标准文件,一般情况下读和写是 non-block 的,select主要是用来对那些会block的设备用的。当然你硬要这么用,也没问题,但是 select 对于这种文件总是会返回可读的,和缓冲区里是否有内容无关(缓冲区的实现是在用户空间的,显然内核不知道其状态)。因为即使虚闹整个文件都被读入缓冲区,由于此时描述符处于 EOF 状态, select 仍然会返回可读。
这里实在是有太多细节。 总之,不建议滥用select,对于标准文件或者单个设备的读写,完全没意义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)