- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UNIX常见问题解答(FAQ_04)
UNIX常见问题解答(FAQ_04)
UNIX常见问题解答(FAQ_04)
作者:none
本篇文章回答以下问题:
4.1) 要如何在使用者不必按 RETURN 的情况下从 terminal 读进东西?
4.2) 我要如何在未曾真的读进东西的情况下检查是否有字元等待读取?
4.3) 要怎样才能得知一个已open 档案之档名?
4.4) 一个执行中的程式如何知道自己的 pathname?
4.5) 如何用 popen() 对一个 process 做读写的动作?
4.6) 在 C 程式中要怎么用 sleep() 才能够 sleep 小于一秒?
4.7) 如何让 setuid 的 shell script 可以使用?
4.8) 我要如何得知有哪些 process 开了某一档案,或某一 process 正在使用哪
一个 filesystem(以至于我无法 unmount 这个 filesystem)?
4.9) 我要怎么知道是谁在 finger 我啊?
4.10) 能不能在一个 process 和 terminal 的连接已经断掉之后再接回来,例如
在 background 跑一个程式然后就 logout 而断掉的程式?
4.11) 有没有办法可以偷听一个 terminal,就是说将其输出复制一份至其他的
terminal。
4.1) 要如何在使用者不必按 RETURN 的情况下从 terminal 读进东西?
在 BSD 中用 cbreak 模式,在 SysV 中则用 ~ICANON 模式。
如果你懒得用 ioctl(2) 来设定 terminal 的参数,也可以用 stty 来做,
不过有点慢又没有效率就是了。底下的程式自己看著办吧:
#include stdio.h
main()
{
int c;
printf(Hit any character to continue\n);
/*
* ioctl() would be better here; only lazy
* programmers do it this way:
*/
system(/bin/stty cbreak); /* or stty raw */
c = getchar();
system(/bin/stty -cbreak);
printf(Thank you for typing %c.\n, c);
exit(0);
}
有好几个人送给我更正确的解法。不过很抱歉我不想把它们加进去,因为这已经
超出这份文件的范围了。
通常对这个问题有兴趣的人,都是想要做一些控制萤幕显示之类的事情。如果你
也是的话,那请参考 curses 的相关文件。 curses 是一个 portable 的萤
幕控制函数库。
4.2) 我要如何在未曾真的读进东西的情况下检查是否有字元等待读取?
一些版本的 UNIX 提供了检查某个 file descriptor 目前是否有东西待读取的
方法。在 BSD 中,可以用 select(2),也可以用 FIONREAD ioctl,检查有几
个字元等待读取,不过这只对 terminal, pipe, 与 socket 有用。在 System
V Release 3 中可以用 poll(2),不过只对 stream 有用。在 Xenix 与 Sys V
r3.2 及其以后的版本里,有一个名叫 rdchk() 的 system call 可以用来检查
对一个 file descriptor 做 read() 会不会卡住。
没有方法可以用来判断是否有字元在 FILE pointer 中待读取。(你可以直接查
看 stdio 的资料结构,看看是否 input buffer 是空的,但是这方法有时会失
效,因为你没有办法知道当你下一次要填满这个 buffer 时会发生什么事。)
有时人们问这个问题是因为想写
if (characters available from fd)
read(fd, buf, sizeof buf);
以达成 nonblocking read。这不是一种好的做法,因为可能测的时候有东西,
要读的时候,已经没有东西可读了。正确的做法应该是用 fcntl(2) 里的
F_SETFL 设定 O_NDELAY。比较旧的系统(Version 7, 4.1 BSD) 没有
O_NDELAY,那就得用 alarm(2) 来设定 read 的 timeout,以达成近似
nonblocking read 的功能。
4.3) 要怎样才能得知一个已 open 档案之档名?
这个是非常困难的。若是这个 file desc
您可能关注的文档
- 2011至2012学年度第一学期五年级数学学科课程实施计划27399.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划28311.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划31959.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划32415.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划35607.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划38343.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划36975.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划47463.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划48375.doc
- 2011至2012学年度第一学期五年级数学学科课程实施计划47919.doc
- 第20讲:《创业史》中考语文名著阅读要点梳理与练习(全国通用)原卷版.pdf
- 考点11 记叙文标题的作用(好处、效果、原因)中考语文现代文阅读高频考点解题指津(全国通用)(解析版).pdf
- 考点05 记叙文从人物描写角度赏析表达效果中考语文现代文阅读高频考点解题指津(全国通用)(原卷版).pdf
- 第30讲:《名人传》中考语文名著阅读要点梳理与练习(全国通用)解析版.pdf
- 考点14 记叙文信息的概括与提取中考语文现代文阅读高频考点解题指津(全国通用)(解析版).pdf
- 第30讲:《名人传》中考语文名著阅读要点梳理与练习(全国通用)原卷版.pdf
- 会计学原理版教辅资源-wild imchap004.pdf
- 企业家的创业与管理.ppt
- 高考历史二轮教师用书第一部分近代篇第8讲民国前期的中国近代中国的动荡与转折.doc
- 第3课收复新疆.ppt
最近下载
- 人教版四年级数学上册培优练习题《亿以内数的认识》.pdf VIP
- 中考数学(二次函数提高练习题)压轴题训练含详细答案(1).doc VIP
- 表1消防技术服务基础设备配备要求.doc VIP
- 探索“在线问诊”服务 - 春雨医生产品分析报告.docx VIP
- 私域培训2_私域顶层设计.pptx VIP
- 人教版2024四年级上册英语 unit1 C 课件.pptx VIP
- 2024届广东深圳市翠园中学高三第三次模拟考试语文试卷含解析.doc VIP
- 专题05 记叙文阅读(解析版)-备战2025年中考语文真题题源解密(上海专用).docx VIP
- 04抗滑桩施工技术规程(试行)-TCAGHP 004-2018.pdf VIP
- 借款合同借款合同.docx VIP
文档评论(0)