最佳技术支持
在 Linux 中(我不关心哪个发行版,我指的是系统架构)是否有可能拥有两个屏幕,即在同一台机器上使用两个显示器?当然,还要配备两张显卡。是否有可能让它们一起运行,无论是在文本模式还是在 X 环境下?是否有可能只有一个实际的 X 桌面,但将两个虚拟桌面投影到两个不同的屏幕上? —Eduardo Garcia, egarcia@msl.es
您提到的“双屏幕”支持称为多头显示支持。它指的是同时使用两个(三个或更多)显示器,并通常使它们作为一个巨大的虚拟桌面来工作。商业 X 服务器,例如 Accelerated X (http://www.xig.com/) 和 Metro-X (http://www.metrolink.com/) 已经有这种支持,最近 XFree 也支持了(但在我看来还不够稳定)。但是请注意,您的硬件(显卡)也必须支持这一点。 —Mario de Mello Bittencourt Neto, mneto@argo.com.br
使用 XFree 4.0,您可以在两张显卡和两个显示器上运行 X,既可以作为独立的会话,也可以作为一个大屏幕 (Xinerama)。应该也可以让 XFree 4.0 在辅助屏幕上(即,不是 Linux 显示控制台消息的那个屏幕)打开一个 X 会话,并在另一个显示器上保持文本模式,但是没有方便的方法在两个屏幕之间来回切换(您必须使用 CTRL+ALT+FN)。帧缓冲 (FB) 支持也适用于两张显卡,所以我猜想 FB 应用程序可以指定要写入哪个 FB 显示器。 —Marc Merlin, marc_bts@valinux.com
由于安装 XFree86 4.0 并非易事,您可能需要等到 RPM 软件包开始出现后再尝试。 —Erik Ratcliffe, erik@calderasystems.com
这取决于您的 X 服务器软件。XFree86 4 版本(比您的 Red Hat 发行版中包含的版本更新)对多头配置有一些支持;您可以在 http://www.xfree86.org/ 下查看其发行说明。 —Scott Maxwell, maxwell@ScottMaxwell.org
fopen 的作用域是什么?也就是说,当您使用这个系统调用时,它具体在哪个位置查找我们想要打开的文件?
—Kumhaar, kumhaar@yahoo.com
如果您提供一个绝对文件名(即以“/”开头的文件名),则 fopen 从根目录开始查找。否则,文件名是相对的,因此 fopen 从进程的当前工作目录开始查找文件。这个目录最初与父进程的当前工作目录相同(因此,如果您从 shell 运行程序,那么它就是您运行程序时所在的目录),但是可以通过调用 chdir 或 fchdir 来更改当前工作目录。顺便说一句,作为一个吹毛求疵的说明,fopen 不是一个系统调用;它是一个 C 库函数。fopen 的部分工作是通过系统 调用 open 来完成的。 —Scott Maxwell, maxwell@ScottMaxwell.org
fopen 库函数是底层 open 系统调用的模拟。您主要将其用于文件和终端输入/输出。当您需要显式控制设备时,最好使用底层系统调用,因为它们可以消除库中潜在的不良副作用,例如输入/输出缓冲。
如果成功,fopen 返回一个非空的 FILE * 指针。如果失败,它返回 NULL 值,该值在 stdio.h 中定义。
fopen 使用 open 系统调用。以下是 open 系统调用的工作方式
1. 当内核接收到 open 系统调用时,它会启动名为 sys_open 的函数。您可以在内核源代码的 fs/open.c 中找到代码。sys_open (const char * filename, int flags, int mode)
2. sys_open 将尝试从文件名中获取关联的 inode 结构。此 inode 结构位于文件所在的目录中(目录是一个特殊文件)。为了获取包含相关信息的目录的 inode,sys_open 将不得不通过开始读取当前目录来递归地获取相对目录的 inode,依此类推。
如果文件名以 / 开头,则过程相同,只是它将从根分区上的 inode 2(/ 的 inode 号)开始。
3. 一旦找到文件的 inode,sys_open 将读取与文件 inode 关联的文件操作,并运行与该 inode/文件关联的 open 方法。
如果文件是设备(参见主设备号和 /proc/devices)或特定的文件系统 (df -k filename -> proc swap ext2 ...),则此 open 方法可能与设备模块相关联。
4. 此 open 方法返回一个 “struct file *”,它与文件描述符相关联。
sys_open 将返回一个文件描述符,一个大于 0 的整数。如果 sys_open 失败,则返回一个小于 0 的整数。然后 fopen 将此文件描述符 (int) 关联到一个文件流 (FILE *)。
希望这能有所帮助。 —Emmanuel-Robert Mayssat, emayssat@valinux.com
fopen(2) 接受两个参数。第一个是要打开的文件,第二个告诉系统以读取、写入、读写和其他选项打开它。如果您没有指定要打开的文件的路径,fopen() 将在当前目录中查找该文件。 —Chad Robinson, Chad.Robinson@brt.com
请随时参考手册页:第 2 章用于系统调用(例如,man 2 open),第 3 章用于库函数(man 3 fopen)。 —Alessandro Rubini, alessandro.rubini@linux.it
我尝试安装 Linux 6.1,但没有成功。以下是发生的情况
我放入 CD 和启动盘。Linux 程序解压缩了所有“running/sbin/loader”。然后它等待几分钟并显示
"install exited abnormally -- received signal 7" sending termination signals.
我问过我认识的每个人“signal 7”是什么意思,但都无济于事。
—Michael C. Fields, kindra@2fords.net
Signal 7 是“总线错误”,正如 /usr/include/asm/signal.h(由 /usr/include/signal.h 包含,这是第一个要查找的地方)报告的那样。这很可能是您机器上的硬件问题,类似于“signal 11”(段错误)问题。请参考 sig11 FAQ,网址为 http://www.bitwizard.nl/。 —Alessandro Rubini, alessandro.rubini@linux.it
您没有提到您尝试安装哪个发行版,但幸运的是,我的水晶球告诉我,它可能是 Red Hat 或其衍生版本。Signal 7 是 SIGBUS,这意味着存在一些硬件/驱动程序问题。我建议尝试更新版本的 Red Hat 或不同的发行版,以防不同的内核对您的机器有所帮助。 —Marc Merlin, marc_bts@valinux.com
我的公司要求我编写一些代码来写入和读取一台特殊的打印机。例如,如果我将字符串“^[I”推送到并行端口,我应该能够读取返回“TP96”。但是,我是一个新手。我一直在查看所有 parport 文档,但我看不懂。parport 是否已经是内核的一部分?我是否需要在自己的程序中 #include parport?我该如何将所有部分组合在一起以完成这个看似简单的任务?
—Michael J. Conroy, m_j_conroy@yahoo.com
两个网站可能会对您有所帮助。第一个包含通用的并行端口编程信息:www.lvr.com/parport.htm。第二个包含有关 Linux 下 I/O 端口编程的信息:metalab.unc.edu/mdw/HOWTO/mini/IO-Port-Programming.html。 —Chad Robinson, Chad.Robinson@brt.com
如果您想了解更多关于 parport 的信息,请查看内核源代码层次结构中的 Documentation/parport.txt 文件。对于个人使用,您应该使用低级 inb/outb 函数(尝试 man outb)。Alessandro Rubini 在 LJ #47 中有一篇关于使用并行端口的精彩(当然 :-)) 文章。 —Pierre Ficheux, pficheux@wanadoo.fr
是的,这是一个编译时选项。
moremagic:~# cat /proc/parport/0/hardware base: 0x378 irq: none dma: none modes: SPP,ECP,ECPEPP,ECPPS2 moremagic:~# cat /proc/parport/0/autoprobe MODEL:Unknown device; MANUFACTURER:Unknown vendor;
我从未做过并行端口编程,但是您可以写入 /dev/lp0(或 lp1、lp2...),并且您可能能够从中读取返回。您可以做的另一件事是查看 lpd 的源代码以获取更多信息。 —Marc Merlin, marc_bts@valinux.com
Linux 可以安装在 Athlon 平台上吗? —Mark MacWilliam, mMacWilliam@infocell.com
由于 Athlon 处理器与 x86 处理器系列具有相同的指令集(并进行了增强),因此 Linux 应该可以在其上无问题地运行。 —Chad Robinson, Chad.Robinson@brt.com
是的。2.2.14 内核(或更高版本)可以识别 Athlon,而 2.3.x(即将成为 2.4)对 Athlon 进行了优化支持。 —Marc Merlin, marc_bts@valinux.com
我正在使用我全新的 700MHz Athlon 系统(当然,运行的是 Linux!)回复这条消息!因此,Linux 不仅可以安装在 Athlon 上,我还可以补充说它运行得非常棒。 —Scott Maxwell, maxwell@ScottMaxwell.org
我在 PC Pentium III 450 上安装 Caldera OpenLinux 2.3 时遇到问题,它配备了 SIS 620 显卡,并在 Windows 98 下运行。我成功地在磁盘上创建了安装 OpenLinux 的分区,但是在尝试安装时,首先屏幕上会出现机器硬件识别的界面,然后屏幕在显示垂直灰线后冻结。我不知道问题可能是什么。您能帮助我吗?
—Susana Diaz, subediaz@satlink.com
SiS 620 芯片组受 SVGA 服务器支持,但由于某种原因,它无法在 16 色 VGA 模式下运行(这是 OpenLinux 图形安装程序使用的模式)。您需要做的是使用字符模式安装,然后在安装完成后运行 lizardx、XF86Setup 或 xf86config 来配置 X Window System。字符模式安装的磁盘映像位于 /col/launch/lisa/floppy 目录中。使用 RAWRITE (在 DOS/Windows 中) 或 dd (在 UNIX/Linux 中) 将 install.144 映像传输到格式化的 1.44MB 软盘。使用新软盘启动安装。 —Erik Ratcliffe, erik@calderasystems.com
SSC 网页上提供了许多在线帮助资源。Sunsite 镜像站点、FAQ 和 HOWTO 都可以在 https://linuxjournal.cn/ 找到。