草庐IT

sys_fork

全部标签

linux - 系统调用 : difference between sys_exit(), SYS_exit 和 exit()

SYS_exit、sys_exit()和exit()有什么区别?我的理解:linux内核提供了系统调用,列在man2syscalls中。glibc提供了那些系统调用的包装函数,它们的名称与系统调用大多相似。我的问题:例如,在man2syscalls中,没有提到SYS_exit和sys_exit()。它们是什么?注意:这里的系统调用exit只是一个例子。我的问题是:SYS_xxx和sys_xxx()是什么? 最佳答案 尽管这适用于所有系统调用,但我将像您的示例一样使用exit()。sys_exit()形式的函数是内核例程的实际入口点,

c - 为什么 glibc 的 fork 实现没有使用 sys_fork?

在eglibc的nptl/sysdeps/unix/sysv/linux/i386/fork.c中有一个定义:#defineARCH_FORK()\INLINE_SYSCALL(clone,5,\CLONE_CHILD_SETTID|CLONE_CHILD_CLEARTID|SIGCHLD,0,\NULL,NULL,&THREAD_SELF->tid)在实际的__libc_fork()中用作实现的核心。但是例如在Linux的arch/x86/entry/syscalls/syscall_32.tbl中存在一个sys_fork条目,在syscalls_64.tbl中也是如此。所以显然Li

C - 使用 fork() 和 exec() 两次

我有以下代码:intmain(intargc,char**argv){char*program;charstringa[1000]="";intnum=123;charsnum[10];if(argc!=2){printf("Usage:monfileName\nwherefileNameisanexecutablefile.\n");exit(-1);}else{program=argv[1];sprintf(stringa,"./%s",program);pid_tpid=fork();if(pid这个程序的名字是myProgram.我在shell中提供的参数是:./myProgr

PHP - 杀死由 pcntl_fork 启动的子进程

我正在使用pcntl_fork启动子进程以通过SMTP发送电子邮件。子进程使用PEARMail包发送电子邮件,但问题是如果远程服务器不响应,则进程将永远运行以等待响应,而不管php.ini中设置的任何时间限制.为了解决这个问题,我使用pcntl_alarm函数在30秒后触发一个函数,如果子进程仍在运行,它会终止它。functionhandlesig($sig){global$pid,$node,$resend;posix_kill($pid,SIGKILL);mysql_query("insertintolog(event)values('Timedout!')");}当我杀死子进程时

c - fork() 中的写时复制如何工作?

我想知道fork()中的写时复制是如何发生的。假设我们有一个进程A,它有一个动态int数组:int*array=malloc(1000000*sizeof(int));数组中的元素被初始化为一些有意义的值。然后,我们使用fork()创建一个子进程,即B。B将迭代数组并进行一些计算:for(ainarray){a=a+1;}我知道B不会马上复制整个数组,但是子B什么时候为数组分配内存呢?在fork()期间?它是一次分配整个数组,还是只为a=a+1分配一个整数?a=a+1;这是怎么发生的?B是否从A读取数据并将新数据写入自己的数组?我写了一些代码来探索COW的工作原理。我的环境:ubunt

c - fork 的子进程是否使用相同的信号量?

假设我创建了一个信号量。如果我fork一堆子进程,它们是否仍会使用相同的信号量?另外,假设我创建了一个内部有信号量并fork的结构。所有的子进程是否仍然使用相同的信号量?如果不是,将结构+信号量存储在共享内存中是否允许子进程使用相同的信号量?我真的很困惑我的fork子进程如何使用相同的信号量。 最佳答案 Let'ssayIcreateasemaphore.IfIforkabunchofchildprocesses,willtheyallstillusethatsamesemaphore?如果您使用的是SysVIPC信号量(semct

python - 了解 Python fork 和内存分配错误

我有一个内存密集型Python应用程序(在数百MB到几GB之间)。我有几个非常小的Linux可执行文件,主要应用程序需要运行,例如child=Popen("makehtml",cwd=r'../../docs',stdout=PIPE,shell=True)child.wait()当我使用subprocess.Popen运行这些外部实用程序(一次,在长时间的主进程运行结束时)时,我有时会得到OSError:[Errno12]Cannotallocatememory.我不明白为什么...请求的进程很小!系统有足够的内存来容纳更多的shell。我使用的是Linux(Ubuntu12.10,

c++ - 用 C 编写 Linux 服务器的最佳方法(phtreads、select 或 fork?)

我有一个关于UNIX(Debian,内核2.6.32)服务器编程的非常具体的问题。我的目标是学习如何编写可以处理大量客户端的服务器。我的目标是超过30,000个并发客户端(即使我的大学提到500,000个是可能的,这似乎QUIIITEEE是一个巨大的数量:-)),但我真的不知道(即使是可能的),这就是我问的原因这里。所以我的第一个问题。有多少同时客户端是可能的?客户端可以随时连接并与其他客户端联系并组成一个组(1个组最多包含12个客户端)。他们可以互相聊天,因此TCP/IP数据包的大小取决于发送的消息。客户端还可以向服务器发送数学公式。服务器将解决它们并将答案广播回组。这是一个相当繁重

linux - Linux 中的 fork() 和 grep 是什么意思?

作为一个非英语母语的人,与其他API相比,我很难记住Linux命令。在Linux中,函数名称似乎并不表明它们的用途。为什么选择名称fork()来创建子进程?在字典中,fork的意思是“有两个或多个fork的器具”,这与创建新进程无关。为什么选择名称grep来“打印与模式匹配的行”?grep是否表示“g报告”?我在哪里可以找到LinuxAPI中其他命令背后的词源? 最佳答案 Fork可以表示一分为二,如道路(source)。Fork(15):todivideintobranches.Grep'setymology:Fromanidio

c - _do_fork() 如何返回两个不同的 PID(一个用于父进程,一个用于子进程)

我正在查看_do_fork()function()试图理解fork()如何返回父进程的子PID和子进程的0。我认为nr包含子进程的PID(将返回给调用者进程),但我看不出它如何能够将0返回给子进程。答案Howdoesfork()knowwhentoreturn0?说返回值在为新进程创建的堆栈上传递,但是(除了没有真正理解它之外)我在代码中找不到它。那么,子进程的返回值0设置在哪里呢?_do_fork()函数的代码复制如下:long_do_fork(unsignedlongclone_flags,unsignedlongstack_start,unsignedlongstack_size