Tag:

分叉一个Rails项目的gem

在这种情况下,我发现了自己两次:我在我的系统上安装一个gem,并从我的Rails项目开始使用它。 最终我需要对这个gem进行一些修改。 我应该如何继续? 理想情况下,我想查看某个地方的gem的源代码,比如〜/ third_party / gems,并且让我的Rails项目使用它。 那可能吗? 在所有的情况下,gem都在github上,所以我可能会在github上克隆它,让我的机会和维护我自己的分支。 我想那时我会直接用我的服务器上的gem install安装那个分支。 那有意义吗?

何时使用二进制空间分区,四叉树,八叉树?

我最近学习了二进制空间分区树及其在3Dgraphics和碰撞检测中的应用。 我也简要地阅读了有关四叉树和八叉树的材料。 你什么时候使用四叉树而不是bsp树,反之亦然? 它们是可以互换的吗? 如果我有足够的信息来填写这样的表格,我会很满意: | BSP | Quadtree | Octree ————+—————-+——- Situation A | X | | Situation B | | X | Situation C | | | X 什么是A,B和C?

拉请求不分叉?

以下是主题“ 我如何在GitHub中贡献其他代码? ”的主题代码步骤。 分叉项目 做一个或多个很好的评论和干净的提交到存储库。 如果您要修改多个零件或特征,则可以在此创build一个新的分支。 在github的web界面中执行一个pull请求。 是否有可能提出一个拉请求,而不是一个回购? 在我的账户里看到20多个回扣,这些回扣是为了获得一些拉动的要求而感到非常难过。 他们没有活动,零星/追随者。 看起来我只是在黑夜里抄袭某人的代码。

fork(),vfork(),exec()和clone()

我期待在Google上find这四者之间的差异,我预计在这方面会有大量的信息,但这四个调用之间确实没有任何可靠的比较。 我着手编译一下这些系统调用之间的区别,这里是我得到的。 所有这些信息都是正确的/我错过了什么重要的东西? Fork :叉调用基本上是复制当前进程,几乎在所有方面都是相同的(并非所有的东西都被复制,例如,在一些实现中资源限制,但是想法是尽可能地创build副本)。 新进程(subprocess)获取不同的进程ID(PID),并将旧进程(父进程)的PID作为其父PID(PPID)。 因为这两个进程现在运行完全相同的代码,所以他们可以知道哪个是由fork的返回代码 – 子代得到0,父代获得子代的PID。 当然,这一切都假设分叉调用起作用 – 否则,不会创build子对象,并且父对象将获得错误代码。 Vfork :vfork和fork的基本区别在于,当使用vfork()创build一个新进程时,父进程暂时挂起,subprocess可能借用父进程的地址空间。 这种奇怪的状态继续下去,直到subprocess退出,或调用execve(),在这一点父进程继续。 这意味着vfork()的subprocess必须小心,以避免意外地修改父进程的variables。 特别的,subprocess不能从包含vfork()调用的函数返回,也不能调用exit()(如果需要退出,应该使用_exit();实际上,对于subprocess也是这样一个普通的fork())。 Exec :执行调用是基本上用新程序replace整个当前进程的一种方法。 它将程序加载到当前进程空间并从入口点运行它。 exec()用函数指向的可执行文件replace当前进程。 除非有exec()错误,否则控制将不会返回到原始程序。 Clone :克隆,作为分叉,创build一个新的过程。 与fork不同,这些调用允许subprocess与调用进程共享部分执行上下文,如内存空间,文件描述符表和信号处理程序表。 当使用克隆创buildsubprocess时,它将执行函数应用程序fn(arg)。 (这与fork不同,fork从原始fork调用的位置继续执行。)fn参数是一个指向subprocess在执行开始时调用的函数的指针。 arg参数被传递给fn函数。 当fn(arg)函数应用程序返回时,subprocess终止。 fn返回的整数是subprocess的退出代码。 subprocess也可以通过调用exit(2)或在收到致命信号后明确终止。 获得的信息forms: fork和exec之间的区别 http://www.allinterview.com/showanswers/59616.html http://www.unixguide.net/unix/programming/1.1.2.shtml http://linux.about.com/library/cmd/blcmdl2_clone.htm 感谢您抽时间阅读 ! 🙂

抓取exec的输出

所以即时通讯设法写一些需要抓住命令输出的东西,然后虐待,然后将其传递给另一个程序。 但即时通讯有一个问题,我不能解决如何得到命令输出,并将其存储下面是我有什么样的 if(fork() == 0){ execl("/bin/ls", "ls", "-1", (char *)0); /* hopefully do something with the output here*/ }else{ *other stuff goes here* }` 所以基本上我不知道是否有任何方法我可以从“execl”得到的输出,并将其传递给其他东西(例如通过存储在某种缓冲区)。 任何build议将是伟大的。 谢谢你们

将exec输出redirect到缓冲区或文件

我正在写一个C程序,我fork() , exec()和wait() 。 我想将我执行的程序的输出写入文件或缓冲区。 例如,如果我执行ls我想写file1 file2 etc缓冲区/文件。 我不认为有一种方法来读取标准输出,所以这意味着我必须使用pipe道? 这里有没有一个通用的程序,我没有find?

fork()分支比预期更多?

考虑下面的一段代码: #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; for(i = 0; i < 2; i++) { fork(); printf("."); } return 0; } 该程序输出8个点。 这怎么可能? 不应该有6个点呢?

如何在Linux中使用共享内存

我的一个项目有点问题。 我一直在试图find一个使用fork()共享内存但是没有成功的例子。 基本上情况是,当用户启动程序时,我需要在共享内存中存储两个值: current_path是char * , file_name也是char * 。 根据命令参数的不同,使用fork()启动新进程,并且该进程需要读取和修改存储在共享内存中的current_pathvariables,而file_namevariables是只读的。 有没有一个很好的教程共享内存与示例代码(如果可能),你可以指示我? 谢谢,bleepzter

使用轮询函数与缓冲stream

我试图在C中使用轮询函数来实现客户机 – 服务器types的通信系统。stream程如下: 主程序分叉了一个subprocess subprocess调用exec函数来执行some_binary 父母和孩子交替发送消息,发送的每个消息都取决于收到的最后一条消息。 我试图用poll来实现这个function,但是由于subprocess缓冲它的输出而导致问题,导致我的poll调用超时。 这是我的代码: int main() { char *buffer = (char *) malloc(1000); int n; pid_t pid; /* pid of child process */ int rpipe[2]; /* pipe used to read from child process */ int wpipe[2]; /* pipe used to write to child process */ pipe(rpipe); pipe(wpipe); pid = fork(); if […]