标签: fork

fork()的目的是什么?

在Linux的许多程序和手册页中,我看过代码使用fork().我们为什么需要使用fork()它的目的是什么?

c unix posix fork

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

fork:retry:资源暂时不可用

我尝试在我的计算机上安装英特尔MPI基准测试,我收到此错误:

fork: retry: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

然后,当我跑步lstop命令时,我再次收到此错误.

导致此错误的原因是什么?

配置我的机器:

Dell precision T7500
Scientific Linux release 6.2 (Carbon)
Run Code Online (Sandbox Code Playgroud)

linux fork intel mpi

77
推荐指数
2
解决办法
17万
查看次数

为什么这个程序打印"分叉!" 4次?

为什么这个程序打印"分叉!"4次?

#include <stdio.h>
#include <unistd.h>

int main(void) {

  fork() && (fork() || fork());

  printf("forked!\n");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c unix linux fork systems-programming

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

如何更改我分叉的GitHub项目?

我分叉了一个项目,进行了一些更改,并接受了拉取请求.但是现在,我分叉的项目移动到另一个存储库,并且是该存储库的一个分支.

那是:

Original -> MyFork
Run Code Online (Sandbox Code Playgroud)

现在:

NewOriginal -> Original -> MyFork
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到以下内容?

NewOriginal -> MyFork
Run Code Online (Sandbox Code Playgroud)

git fork github

73
推荐指数
4
解决办法
6万
查看次数

Linux中"system"和"exec"的区别?

systemexec家庭命令有什么区别?特别是我想知道哪一个创建子进程工作?

c linux fork exec

67
推荐指数
4
解决办法
7万
查看次数

"fork()"之后的printf异常

操作系统:Linux,语言:纯C

我正在学习一般的C编程,以及在特殊情况下在UNIX下进行C编程.

printf()在使用fork()呼叫后,我发现了一个奇怪的(对我来说)函数的行为.

#include <stdio.h>
#include <system.h>

int main()
{
    int pid;
    printf( "Hello, my pid is %d", getpid() );

    pid = fork();
    if( pid == 0 )
    {
            printf( "\nI was forked! :D" );
            sleep( 3 );
    }
    else
    {
            waitpid( pid, NULL, 0 );
            printf( "\n%d was forked!", pid );
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产量

Hello, my pid is 1111
I was forked! :DHello, my pid is 1111
2222 was forked!
Run Code Online (Sandbox Code Playgroud)

为什么第二个"Hello"字符串出现在子输出中?

是的,这正是父母在开始时与父母一起打印的内容pid …

c unix linux printf fork

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

视觉上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());
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

[6909][6936] i=0
[6909][6936] i=1
[6936][6938] i=1
[6909][6936] i=2
[6909][6936] hi
[6936][6938] i=2
[6936][6938] hi
[6938][6940] i=2
[6938][6940] hi
[1][6937] i=0
[1][6939] i=2
[1][6939] hi
[1][6937] i=1
[6937][6941] i=1
[1][6937] i=2
[1][6937] …
Run Code Online (Sandbox Code Playgroud)

c fork

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

发送HTTP响应后继续执行PHP

如何让PHP 5.2(作为apache mod_php运行)向客户端发送完整的HTTP响应,然后继续执行操作一分钟?

长篇故事:

我有一个PHP脚本,必须执行一些长数据库请求并发送电子邮件,运行需要45到60秒.该脚本由我无法控制的应用程序调用.我需要应用程序报告从PHP脚本收到的任何错误消息(主要是无效的参数错误).

应用程序的超时延迟小于45秒(我不知道确切的值)因此将PHP脚本的每次执行都注册为错误.因此,我需要PHP尽可能快地将完整的HTTP响应发送到客户端(理想情况下,只要输入参数已经过验证),然后运行数据库和电子邮件处理.

我正在运行mod_php,所以pcntl_fork不可用.我可以通过将要处理的数据保存到数据库并运行实际过程来解决这个问题cron,但我正在寻找一个更短的解决方案.

php fork

62
推荐指数
6
解决办法
4万
查看次数

分叉与线程

我之前在我的应用程序中使用过线程并且很好地了解它的概念,但是最近在我的操作系统讲座中我遇到了fork().这与线程类似.

我谷歌搜索他们之间的差异,我开始知道:

  1. Fork只不过是一个看起来与旧进程或父进程完全相同的新进程,但它仍然是一个具有不同进程ID并拥有自己内存的不同进程.
  2. 螺纹是轻量级工艺,具有较少的开销

但是,我脑子里还有一些问题.

  1. 什么时候你应该更喜欢fork()而不是线程和反之?
  2. 如果我想作为孩子调用外部应用程序,那么我应该使用fork()或线程来做吗?
  3. 在进行谷歌搜索时,我发现有人说在线程中调用fork()是件坏事.为什么人们想在类似的东西中调用线程内的fork()?
  4. fork()是否无法利用多处理器系统,因为父进程和子进程不同时运行?

unix linux multithreading fork programming-languages

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

为Rails项目分配一个gem

我在这种情况下发现自己两次:我在我的系统上安装了一个gem并开始在我的Rails项目中使用它.最终我需要对该gem进行一些更改.我该怎么办?

理想情况下,我想查看某个地方的宝石的源代码,比如〜/ third_party/gems,对它进行处理并让我的Rails项目使用它.那可能吗?

在所有情况下,宝石都在github,所以我可能会在github,克隆它,抓住机会并维护我自己的分支.我想我会在我的服务器上直接安装gem分支.那有意义吗?

ruby gem fork ruby-on-rails

58
推荐指数
1
解决办法
9929
查看次数