Tag: 叉子

如何退出一个subprocess – _exit()与退出

考虑这个代码片段: pid_t cpid = fork(); if (cpid == -1) { perror("fork"); exit(EXIT_FAILURE); } if (cpid == 0) { // in child execvp(argv[1], argv + 1); perror("execvp"); _exit(EXIT_FAILURE); } // in parent 如果execvp返回,我将如何退出subprocess? 我应该使用exit()还是_exit()?

只使用本地存储库历史logging的子集创buildGitHub存储库

背景:我正在接近开放采购我已经工作了两年多的个人研究代码 。 它开始作为一个SVN存储库的生活,但我大约一年前转移到Git,我想分享GitHub上的代码。 但是,这些年来积累了很多的东西,我宁愿让公众的版本在现在的状态下开始。 不过,我仍然想为此作出贡献,并纳入其他人的潜在贡献。 问题是:有没有办法“分叉”一个git仓库,以便叉子上没有历史logging(它位于GitHub上),但是我的本地仓库仍然有完整的历史logging,我可以把/推到GitHub上? 我没有任何关于大型软件仓库pipe理的经验,所以非常感谢。

是否有可能在Github上“分叉”?

我目前正在从一个我一直在研究的框架上开展一个分拆项目(fork)。 这个项目的目的是相当通用的,但现在我需要为我的客户再次分配代码库。 在这一刻,我为我的客户创build了一个自定义分支,但我宁愿有一个独立的存储库。 是可以“叉叉”? 如果没有,我有什么替代scheme? 情况概述: 框架库(原始) 通用应用程序库(fork) (尚未)客户端存储库(应用程序的分支) 注意:当试图在Github上“fork fork”的时候,你会收到一个你已经分叉项目的通知:

分叉/多螺纹工艺| 巴什

我想使我的一段代码更有效率。 我正在考虑把它分成多个进程,让它们一次执行50/100次,而不是一次。 例如(伪): for line in file; do foo; foo2; foo3; done 我想这个for循环运行多次。 我知道这可以用分叉来完成。 它看起来像这样吗? while(x <= 50) parent(child pid) { fork child() } child { do foo; foo2; foo3; done return child_pid() } 还是我想这是错误的方式? 谢谢!

从视觉上来看,For循环中fork()会发生什么

我一直在尝试理解fork()行为。 这一次在for-loop 。 请注意以下代码: #include <stdio.h> void main() { int i; for (i=0;i<3;i++) { fork(); // This printf statement is for debugging purposes // getppid(): gets the parent process-id // getpid(): get child process-id printf("[%d] [%d] i=%d\n", getppid(), getpid(), i); } printf("[%d] [%d] hi\n", getppid(), getpid()); } 这是输出: [6909][6936] i=0 [6909][6936] i=1 [6936][6938] i=1 [6909][6936] […]

发送HTTP响应后继续执行PHP

我怎样才能让PHP 5.2(以Apache mod_php身份运行)发送一个完整的HTTP响应到客户端,然后继续执行操作多一分钟? 漫长的故事: 我有一个PHP脚本,必须执行几个长的数据库请求,并发送电子邮件,这需要45至60秒运行。 这个脚本被我无法控制的应用程序调用。 我需要应用程序报告从PHP脚本收到的任何错误消息(大多数无效的参数错误)。 该应用程序的超时延迟短于45秒(我不知道确切的值),因此将PHP脚本的每个执行注册为一个错误。 因此,我需要PHP尽快将完整的HTTP响应发送到客户端(理想情况下只要input参数已经过validation),然后运行数据库和电子邮件处理。 我正在运行mod_php,所以pcntl_fork不可用。 我可以通过将要处理的数据保存到数据库并从cron运行实际进程来解决此问题,但是我正在寻找一个较短的解决scheme。

在GitHub上有一个公共回购的私人分支?

我有一个GitHub仓库中的公共PHP项目,其中只包含一个分支(主)。 我想有一个单独的分支/分支,这对我来说是私有的(我已经为私有的GitHub回购付款了)。 我希望能够将私人分支/分支的更改合并到公共回购,反之亦然。 考虑到这一点,这里是我的问题: 我可以在公共回购上有一个私人分支吗? 我可以将自己的公共回购交易到我自己的私人分行/分支吗? 如果两者都是可能的,哪个是最好的前进方向? 如果两者都不,我应该如何进行?

我如何改变我从哪一个GitHub项目分叉?

我分了一个项目,做了一些改动,并接受了一个拉取请求。 但现在,我分叉的项目移动到另一个存储库,并且是该存储库的一个分支。 那是: Original -> MyFork 现在: NewOriginal -> Original -> MyFork 我将如何得到它以下? NewOriginal -> MyFork

fork()的目的是什么?

在Linux的许多程序和手册页中,我看到了使用fork()代码。 为什么我们需要使用fork()以及它的用途是什么?

使用Process.spawn作为Process.fork的替代品

我的开发环境是运行ruby 1.9.3p125(RubyInstaller)和rails 3.2.8的Windows机器。 在使用第三方gem时,一次又一次出现的问题是缺lessWindows上的fork()。 这最近阻碍了我使用几乎任何运行gem的分布式testing(就像这些 ),因为它们依赖于fork。 一些StackOverflow的老问题试图find解决这个问题的方法,但是在将Process.spawn添加到ruby之前,或者是由于其他原因而被迫使用旧版本的Ruby的人。 提议的解决scheme之一是使用Cygwin获得fork()支持,这是完全没有问题的 – 我想我宁愿在这之前完全切换到Linux。 另一个build议的解决scheme是使用win32-process gem来获得fork()支持。 从最新的版本(0.7.0)中删除叉支持,并使用下一个最早的版本(0.6.6),它支持(叉)支持叉似乎没有工作,至less运行任何分布式testing我尝试过的gem(Spork,并行testing,Hydra,Specjour,几乎所有的)。 有趣的是,gem的作者在自述中提到Process.spawn是Process.fork的一个可以接受的解决方法。 我已经看到很多信息,或者暗示,或者直接声明 ,在Windows上,使用Ruby 1.9,派生可以用作fork的替代品。 我已经花了相当多的时间玩这个,基本上试图用几个引用的gem中的Process.spawn代替Process.fork,但没有成功。 在我看来,也许行为是相似的,但不完全一样。 例如,不清楚spawn实际上是以fork的相同方式复制整个过程,还是仅仅使用提供的参数创build一个新的过程。 也不清楚spawn方法是否接受另一个ruby方法作为参数,或者只接受一个系统命令。 文件似乎意味着它只是一个命令,但似乎是一种方法(sorting),但我可能做的不正确。 我认为对于某些事情来说,fork只是用来创build一个“便宜的线程”,在以前的ruby版本中不支持线程。 然而,似乎这些分布式testing的gem可能合法地依赖于fork()的全部function,以保持项目状态,并且不会为每个testing加载整个ruby环境。 这是在我的正常编程职责和经验之外,所以我可能会做出一些不正确的假设。 所以,我的问题是,在所有情况下,Process.spawn是否可以相对简单地使用以达到与Process.fork相同的结果? 我开始怀疑不是,但是如果是这样的话,有人可以举一个例子来说明如何去做这个转变吗?