标签: programming

用 C 语言实现 Unix shell:日志记录

我目前正在用 C 语言实现我自己的 UNIX shell。shell 的基础正在工作,你可以在这里找到源代码

现在我的下一个任务是为 shell 实现日志记录功能。所以这是我的问题:

什么是 UNIX/Linux 最佳实践来做到这一点?简单的方法是每次打开一个文件并写入它。但我想知道是否有一个函数可以为我解决这个问题,帮助我生成......“更干净”......代码。

预先感谢您的帮助,我对编程很陌生,但我想把事情做好。

PS:如果您对代码的其余部分有任何一般性评论,我们将不胜感激:-)

command-line shell programming c system-programming

5
推荐指数
1
解决办法
2720
查看次数

如何安装 Scala?

请注意:我必须使用源包,而不是来自 repo 的预构建包(它坏了,至少 IDEA 抱怨)。

从页面:http : //www.scala-lang.org/downloads我下载了scala.final.tgz包。我通过解压到/usr/local/share.

但是,当我运行 IntelliJ IDEA 并指向此目录时,它会抱怨丢失/doc/scala-devel-doc...(也许还有更多丢失的东西,但 IDEA 切断了其余部分)。

我也下载了,scala.final-devel-docs.tgz但它抱怨相同的丢失文件。

在这些软件包中没有任何关于如何安装 scala 的说明。scala 网页也缺少如何安装它的任何信息(除了tgz可以使用 解压文件的注释tar)。

openSUSE 11.4,IntelliJ IDEA 10.5.2。

解决办法,使用Eclipse Luke...

随着生活的继续,我似乎倾向于完全避免破碎的想法/产品/等,而不是修复它们。

无论如何,也许有人会发现它很有用。

  • IntelliJ 没有抱怨缺少 .jar 包而是缺少子目录
  • 您可以手动下载 docs 额外包,然后将其解压到目录 YOUR_SCALA_MAIN_DIR/doc/scala-devel-docs (注意命名,tgz 文件添加了一些命名——解压后重命名)
  • 安装“指令”完全错误——第一个命令不测试任何东西,它安装额外的包
  • 一旦安装,您将无法测试安装,因为您将没有足够的权限来访问系统文件——并以 root 身份在系统级别测试某些东西......不聪明
  • 此外,它甚至不起作用,因为代码需要您假定的不同位置的文件(尽管很容易修复)
  • 最重要的是,IntelliJ 仍然不会运行您的代码!

现在进行比较——在 Eclipse 中(尽管所有关于非常不稳定的 Scala 插件的评论)不仅我不需要配置任何东西,不仅我自己的测试代码是即时编译的(IntelliJ 需要一些时间),而且它被执行,并且没有任何错误地运行。

使用了相同的 Scala。区别呢?

@user未知,非常感谢您的帮助!多亏了你,我有了更完整的 Scala 安装。

...或IntellIJ

经过一番努力,我也设法设置了 IntelliJ。也许有更简单的方法,但这对我有用:

  • 安装 Scala
  • 安装 IntelliJ …

programming development software-installation intellij

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

初学者最好从哪种编程语言开始?

我非常渴望学习一些编码。但是,我有点犹豫要从哪种编程语言开始。周围是 Python,但对于 QBASIC 知识有限的人来说,它是正确的选择吗?

linux programming

5
推荐指数
3
解决办法
2万
查看次数

是否有适用于带有 USB 键盘和触摸屏手写笔驱动程序的 MSM7227 平板电脑的 Linux?

我有一台配备 800MHz MSM7227 处理器、Snapdragon 系列(ARM 架构?)、Android 2.3 的 ZTE V9C 7" 平板电脑,我想在上面运行一个(非常轻量级的)Linux(我知道 Android 使用 Linux 内核)。我也有一个物理键盘和一个手写笔;我担心的是这些驱动程序(键盘是必须的,因为我喜欢 vim)。3G 网卡或 wifi 驱动程序也是编程的必需品。不要忘记, SD 卡存储支持。

我想用它来编程/使用 Python、C 和 Git(以及“可切换”GUI 中的可选 Web 浏览器)(希望:startx启动 GUI 等)。vim是我做开发的必备;我希望它运行良好。

此外,如果我无法获得所有硬件(例如相机、电话天线等)的驱动程序,那么能够与 Android 进行双启动会很好。

有可能有这样一台 Linux 机器吗?

linux programming drivers tablet

5
推荐指数
1
解决办法
542
查看次数

vim 中的右对齐注释

我正在使用 vim 编写 C 代码,并且正在寻找右对齐我的注释的可能性,以便它们都以第 80 列结尾。举一个简短的例子:

int a = 80; /* initialize a */
int b = 7; /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */
Run Code Online (Sandbox Code Playgroud)

应该变成

int a = 80;                               /* initialize a */
int b = 7;                                /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */
                                                           ^col 80
Run Code Online (Sandbox Code Playgroud)

我已经安装vim-easy-align进行其他格式设置,但还没有找到如何执行此对齐。也许有人知道怎么做?

我不坚持vim-easy-align。如果你有另一个插件可以完成这项工作..告诉我;)。

vim programming text

5
推荐指数
2
解决办法
2165
查看次数

将程序 GUI 前端和 CLI 功能分开

在 Linux 中,很多程序都有 CLI 版本和 GUI 前端。我在某处读到这遵循 linux 哲学并且是很好的做法。当然,从开发人员的角度来看,将 GUI 代码与实际程序分开是正确的。

给定一个可以从命令行愉快使用的程序,我想为命令行版本创建一个 GUI。我在这里有哪些选择?

我只能想到 GUI 开发人员会使用的 2 个。

  • 使用配置的参数调用程序,如下所示:

    system("someprogram --paramter1 -p2 -p3")

  • 让 CLI 版本能够使用套接字(unix、inet 等)在服务器模式下运行并使用这些套接字与“服务器”进行通信

在我看来,最干净的解决方案是第二个,但如果不改变 CLI 版本,这并不总是可行的。

实际问题是分别构建 cli 版本和 GUI 版本的正确方法是什么?

command-line programming gui

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

unix 中的术语静态变量是什么意思?

来自本书的第 2.7 节 -名为进程内存布局的 Linux 编程接口

数据定义为

static variables used by the program.
Run Code Online (Sandbox Code Playgroud)

静态这个词在这里有什么意义?我知道 Java 中的静态变量是什么,但我无法在此上下文中关联该含义。

process programming terminology

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

是否有与 FreeBSD 的“Linux 编程接口”等效的书籍/资源?

在座的大多数人可能都知道著名的The Linux Programming Interface,它提供了真正精通 Linux 和通用 POSIX API 的指南。我知道很多一般的 POSIX 知识可以应用于所有 Unix/类 Unix 系统。

但是,我对是否有关于较低级别的 FreeBSD 系统编程和它独有的接口(例如 GEOM 和 devd)的等效书籍、文档或资源很感兴趣。或者我应该简单地坚持使用联机帮助页和文档?

freebsd programming books interface

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

窗口系统严格用于代码编辑?

我是一个可用性痴迷者,我不禁梦想着将一个窗口系统配置为仅用于编辑代码是多么美好......

大多数情况下它是极简主义的,只有文本窗口框架、查找/替换、窗口管理命令、缓冲区处理命令和最简单的文件管理

你能想到任何真正只是编辑代码/文本的窗口系统吗?

注意:只要您愿意,控制台就不算数,因为那不是窗口系统!

programming window-manager editors

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

sudo -u user bash 有效,但 $HOME 没有相应改变

我正在编写一个脚本来设置新的 debian 安装。问题出在这段代码中:

if [ ! -z "$USER1" ]
then
    sudo -u "$USER1" bash <<-EOF
    cp "$BASHRC $HOME"/.bashrc
    wget https://raw.github.com/trapd00r/LS_COLORS/master/LS_COLORS -O "$HOME"/.dircolors
    echo 'eval $(dircolors -b $HOME/.dircolors)' >> "$HOME"/.bashrc
    . "$HOME"/.bashrc
    echo "Here is LS_COLORS in action: "
    ls -l "$HOME"/ 
EOF
Run Code Online (Sandbox Code Playgroud)

问题:

当我对另一个用户 sudo 时, $HOME 变量没有显示/更改这个新用户的主目录。

问题

你能向我解释这个问题吗?

我将如何以最佳和有效的方式做到这一点?

编辑:

为什么我的 cp 命令中总是出现“ cp: cannot stat '': No such file or directory”或“ cp: missing opereand”?我认为它再次与$ HOME有关.......

bash programming shell-script environment-variables home

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