小编mak*_*ghi的帖子

从apue编译代码

刚刚我开始阅读这本书:UNIX® 环境中的高级编程。我想尝试运行它的第一个代码示例。我正在运行 Scientific Linux 6.4。

我下载了源代码,正如它在自述make文件中所说的那样,我在未压缩的文件中运行。

我写了第一个程序(一个模拟ls命令)

#include "./include/apue.h"
#include <dirent.h>

int
main(int argc, char *argv[])
{
    DIR           *dp;
    struct dirent *dirp;

    if(argc!=2)
        err_quit("usage: test directory_name");

    if((dp=opendir(argv[1]))==NULL)
        err_sys("Can't open %s", argv[1]);

    while((dirp=readdir(dp))!=NULL)
        printf("%s\n", dirp->d_name);

    closedir(dp);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并将其放入未压缩的文件中。正如书中所建议的那样,我接着跑:gcc myls.c. 但我收到此错误:

# gcc myls.c
/tmp/ccWTWS2I.o: In function `main':
test.c:(.text+0x20): undefined reference to `err_quit'
test.c:(.text+0x5b): undefined reference to `err_sys'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我想知道如何解决这个问题。我还希望能够运行我在任何目录中编写的代码。

compiling

14
推荐指数
1
解决办法
2万
查看次数

在没有 unetbootin 的情况下创建可引导的 Linux 安装 USB

我想从 USB 安装 Scientific Linux。我不知道为什么 unetbootin 不起作用,但我并不好奇:毕竟我是从 Windows 转到 Linux 来查看和学习底层程序的。我将我的 USB 驱动器格式化为 FAT32 并以 root 身份运行此命令:

# pv -tpreb /path/to/the/downloaded/iso | sudo dd of=/path/to/the/USB/device 
Run Code Online (Sandbox Code Playgroud)

虽然它适用于 Live-CD 或网络安装(小于 1GB),但不适用于大约 4GB 的实际安装 DVD。如果有人能帮我解决这个问题,我将不胜感激。

考虑到它适用于较小的 .iso 文件这一事实,我想这与文件系统有关,对吗?我还有什么其他选择?

boot usb scientific-linux system-installation pv

11
推荐指数
1
解决办法
1万
查看次数

usbhid 找不到输入中断端点

我安装了 Scientific Linux 6.5。从一开始(在这台计算机上),在系统启动期间(当我按下esc以查看已写入的启动日志时),我经常看到这条线在所有启动命令之间跳转:

usbhid: 9-2:1.1: couldn't find an input interrupt endpoint
Run Code Online (Sandbox Code Playgroud)

我对此没有什么大问题,所以直到现在我才忽略它。最近我试图emacs在纯终端环境中编辑我的程序(通过按Ctrl+Alt+F2),在我的工作中间,这条线再次跳入!我想看看是什么导致了它以及如何解决这个问题。

这是一个例子。我在 emacs 中写了这段文字:

This is a test to show the problem.

This line was a clean sentance, I kept the cursor 
in it to show how the line jumps in. 

It is not too common but it jumps in every once and a while.
Run Code Online (Sandbox Code Playgroud)

等了一会儿,那行跳到了光标所在的那一刻(在第三行的“how”之后):

在此处输入图片说明

这条线仍然存在,但只是在外观上!当我按退格键时,它会删除底层句子,我只能越过它与未下线重叠的区域。

最终,当我保存它时,我也看不到它,进一步证明它只是出现在那里,而不是在实际的缓冲区中。

当我lshw -c input以 root 身份运行时,我得到以下输出:

[root@mycomputer myid]# lshw -c input
 *-usb                   
   description: …
Run Code Online (Sandbox Code Playgroud)

linux command-line

4
推荐指数
1
解决办法
3万
查看次数

临时控制外壳

在我的办公室计算机(运行 Scientific Linux 6.3)上,我有几个窗口在单独的终端模拟器 ( /dev/pts/) 中运行一些进程。我经常从我的 iPad 用 iSSH 连接到我的办公室电脑,但我只能看到已写入文件的程序的结果,而无法看到每个终端正在显示或控制终端。

我希望能够暂时将终端的控制权切换到我的 iPad iSSH 终端,查看结果,运行新命令(在我的办公室终端上从我的 iPad 上)然后让程序在我的办公室计算机上运行并返回到我的 iSSH终端,所以我可以检查其他终端或干脆退出。由于我大部分时间使用 3G 来连接我的 iPad,我不想使用任何图形相关的方法,这会非常慢。

据我所知,reptyr似乎将进程的控制权从一个终端永久转移到另一个终端,我还没有看到任何人谈论(或询问)将控制权交还给原始终端。我想在完成后将其返回到原来的终端。

我真的很感激任何建议或帮助。提前致谢

ssh

2
推荐指数
1
解决办法
207
查看次数