- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
Ryan Tomayko 用 this post 引发了一场激烈的 Storm 关于使用 Unix 进程控制命令。
We should be doing more of this. A lot more of this. I'm talking about fork(2), execve(2), pipe(2), socketpair(2), select(2), kill(2), sigaction(2), and so on and so forth. These are our friends. They want so badly just to help us.
我有一些代码(DataMapper 的 delayed_job
克隆,我认为它适合这个,但我不清楚如何利用列出的命令。任何想法关于如何改进此代码?
def start
say "*** Starting job worker #{@name}"
t = Thread.new do
loop do
delay = Update.work_off(self)
break if $exit
sleep delay
break if $exit
end
clear_locks
end
trap('TERM') { terminate_with t }
trap('INT') { terminate_with t }
trap('USR1') do
say "Wakeup Signal Caught"
t.run
end
end
最佳答案
啊是的......“我们应该做更多这样的事情”的危险没有解释每一个的作用以及你会在什么情况下使用它们。对于像 delayed_job
这样的东西,您甚至可能在使用 fork
而不知道您正在使用 fork
。也就是说,这真的没关系。 Ryan 正在谈论使用 fork
来预创建服务器。 delayed_job
将使用 fork
将进程转变为守护进程。相同的系统调用,不同的目的。在前台(不使用 fork
)运行 delayed_job
与在后台(使用 fork
)运行 delayed_job
的性能差异可以忽略不计。
但是,如果您编写一个接受并发连接的服务器,现在 Ryan 的建议是对的。
fork
:创建原始进程的副本execve
:停止执行当前文件并开始在同一进程中执行新文件(在 rake 任务中非常有用)pipe
:创建管道(两个文件描述符,一个读,一个写)socketpair
:类似管道,但用于套接字select
:让您等待多个文件描述符中的一个或多个准备好超时kill
:用于向进程发送信号sigaction
:让您可以更改进程收到信号时发生的情况关于ruby - 在 Ruby 中使用 Unix 进程控制方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604821/
正如标题所暗示的那样,我无法弄清楚 Unix 内核如何将逻辑文件偏移量转换为逻辑块号,然后从 i-node 中检索它。 作为引用,我要求对 Maurice J. Bach 在“UNIX 操作系统的设计
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我在互联网上做了一些研究,但仍然很困惑。 UNIX 时间是像 GMT/UTC 那样的通用时间还是像本地时间一样因地而异? 我知道 UNIX 时间是从 1970 年 1 月 1 日格林威治标准时间 00
您如何评估 Unix 系统管理员。 Unix 管理员应该具备哪些编程能力? 最佳答案 我用于快速过滤器的一些: 什么是 fork 炸弹,它是好是坏? 给我一个单行命令,计算日志文件中有多少行从昨天的日
谁能告诉我字典文本文件在 UNIX 系统上的位置?或者我在哪里可以获得一个好的字典文本文件?我目前一直在使用来自 SUN 的文本文件,但它包含不带句点的缩写(否则我可以删除它们)。有人能指出我正确的方
在我的 Ubuntu 12 vps 上,我正在运行一个完整的比特币节点。当我第一次启动它时,它使用了大约 700mb 的内存。如果我 24 小时后回来 (free -m) 将如下所示: total
我想编写一个 unix/linux 程序,它将使用一个配置文件。 我的问题是,我应该把文件的位置放在哪里? 我可以将位置(如 /etc )“硬编码”到程序本身中。 但是,我希望它,如果没有权限的用户可
在UNIX脚本编程中,cat是可以将2个文件组合在一起的命令: cat file1 file2 > file3 通过合并前两个生成第三个。 另外,cat可以与管道一起使用: cat file1 | t
我有一个通过 ssh 连接到外部机器的终端,并且有一个进程在其中运行。 是否可以将执行移到后台,以便我可以关闭 ssh 连接而无需终止它?如果是这样怎么办? 最佳答案 按 control + Z,这将
我正在试验我自己的 BSD 或 Linux 发行版。我想以对最终用户有意义的方式组织系统文件。我希望他们能够访问系统,而不会出现 *nixes 留下的所有文件困惑。 有没有办法在不丢失动态链接的情况下
这条评论让我感到困惑:“kill -l 通常会列出所有信号”。我认为信号意味着量化的能量。 [已添加] 请澄清 Unix 中的(计算)信号和物理信号。它们是完全不同的概念吗? [已添加] 范式之间是否
fuser 命令让我知道哪些进程正在使用文件或目录。 我正在寻找相反的命令:让我知道进程正在使用哪些文件。 更新 忘了说它是针对 Solaris 系统的。 最佳答案 lsof -p 来自 here
如果我有一个叫做“orange”的词,我如何将它拆分成单独的字符。 我的输出应该是: o r a n g e 最佳答案 echo orange | fold -w 1 输出 o r a n g e 关
和有什么区别工作和一个 流程在 Unix 中?你能举个例子吗? 最佳答案 作业是由 shell 启动的进程。 shell 在作业表中跟踪这些。作业命令显示事件后台进程的列表。他们得到一个 jobspe
unix 如何处理带空格和参数的完整路径名? 在 Windows 中,我们引用路径并在其后添加命令行参数,在 unix 中如何? "c:\foo folder with space\foo.exe"
我必须合并具有相同标题的多个CSV文件。 我必须保留第一个文件的 header ,并删除所有其他文件的 header ,然后合并它们并创建一个主文件。 文件1: Id,city,name ,locat
我需要在两个字段上加入两个文件。但是,即使连接失败,我也应该检索文件 1 中的所有值,就像左外连接一样。 文件 1: 01|a|jack|d 02|b|ron|c 03|d|tom|e 文件2: 01
在 Solaris, HP-UX 上获取进程大小的正确方法是什么?和 AIX ?我们应该使用 top或 ps -o vsz或者是其他东西? 最佳答案 vsize的确切定义, rss , rprvt ,
我在文件上使用了“touch”,更新了文件的时间戳,但父目录的时间戳没有改变。但是,(如预期)当我在父目录中创建新文件时,该目录的时间戳确实发生了变化。 类 UNIX 操作系统(特别是 AIX)使用什
一般来说,当我们从多个进程向 UNIX 中的文件追加内容时,我们可以认为什么是理所当然的?是否有可能丢失数据(一个进程覆盖另一个进程的更改)?数据有可能被破坏吗? (例如,每个进程都将每个追加一行追加
我是一名优秀的程序员,十分优秀!