草庐IT

unidbg-fork

全部标签

c++ - 拒绝从非 fork 进程访问共享内存

我需要创建一个包含一些secret数据的共享内存段。我使用shmget和shmat函数访问具有0600权限的段。我只想与fork进程共享这段内存。我尝试创建另一个应用程序来尝试访问该段,但没有成功,所以它看起来像我想要的那样工作。但是当我再次运行创建段的应用程序时,它可以访问该段。这怎么可能?将secret数据存储到共享内存中是个好主意吗? 最佳答案 您可以mmap()通过在父进程中提供MAP_SHARED和MAP_ANONYMOUS标志来共享和匿名内存区域。该内存只能由该进程及其子进程访问。由于内存段是匿名的,没有其他进程可以引用

php - "pcntl_fork(): Error 12"是什么意思?

我找遍了,脸色铁青,找不到这个问题的答案。在哪里可以找到列出pcntl_fork()的所有错误代码含义的表格?甚至Cfork()函数,就此而言。 最佳答案 似乎12错误代码表明没有足够的内存进行fork。参见thispost,例如(引用):I'vehadthiswhen(1)I'verunoutofmemory,and(2)whenthepidtableisfull.Inthelattercasearogueprogramwasconstantlyforkedchildprocesses¬picking-upthemessag

php - "pcntl_fork(): Error 12"是什么意思?

我找遍了,脸色铁青,找不到这个问题的答案。在哪里可以找到列出pcntl_fork()的所有错误代码含义的表格?甚至Cfork()函数,就此而言。 最佳答案 似乎12错误代码表明没有足够的内存进行fork。参见thispost,例如(引用):I'vehadthiswhen(1)I'verunoutofmemory,and(2)whenthepidtableisfull.Inthelattercasearogueprogramwasconstantlyforkedchildprocesses¬picking-upthemessag

c - 当线程 fork 时会发生什么?

我知道从线程调用fork()sys_call是个坏主意。但是,如果一个线程使用fork()创建一个新进程会发生什么?新进程将是创建该线程的主线程的子进程。我想。如果其父进程先完成,则新进程将附加到init进程。它的父线程是主线程,而不是创建它的线程。如果我错了,请纠正我。#include#includeintmain(){thread_tpid;pthread_create(&(pid),NULL,&(f),NULL);pthread_join(tid,NULL);return0;}void*f(){inti;i=fork();if(i 最佳答案

c - 当线程 fork 时会发生什么?

我知道从线程调用fork()sys_call是个坏主意。但是,如果一个线程使用fork()创建一个新进程会发生什么?新进程将是创建该线程的主线程的子进程。我想。如果其父进程先完成,则新进程将附加到init进程。它的父线程是主线程,而不是创建它的线程。如果我错了,请纠正我。#include#includeintmain(){thread_tpid;pthread_create(&(pid),NULL,&(f),NULL);pthread_join(tid,NULL);return0;}void*f(){inti;i=fork();if(i 最佳答案

相当于 fork 的克隆?

我想使用clone函数的命名空间功能。阅读联机帮助页,似乎clone有很多我需要担心的复杂细节。是否有等效的clone调用goodol'fork()?我已经熟悉fork,并且相信如果我在clone中有一个起点,我可以从那里添加标志和选项。 最佳答案 我认为这会起作用,但我对某些指针参数并不完全确定。pid_tchild=clone(child_f,child_stack,/*intflags*/SIGCHLD,/*argumenttochild_f*/NULL,/*pid_t*pid*/NULL,/*structusr_desc*t

相当于 fork 的克隆?

我想使用clone函数的命名空间功能。阅读联机帮助页,似乎clone有很多我需要担心的复杂细节。是否有等效的clone调用goodol'fork()?我已经熟悉fork,并且相信如果我在clone中有一个起点,我可以从那里添加标志和选项。 最佳答案 我认为这会起作用,但我对某些指针参数并不完全确定。pid_tchild=clone(child_f,child_stack,/*intflags*/SIGCHLD,/*argumenttochild_f*/NULL,/*pid_t*pid*/NULL,/*structusr_desc*t

c++ - 线程和 fork()。我该如何处理?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:forkinmulti-threadedprogram如果我有一个应用程序使用fork()并且可能被开发为多线程,安全地编写此类应用程序需要考虑哪些经验法则/准则?

c++ - 线程和 fork()。我该如何处理?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:forkinmulti-threadedprogram如果我有一个应用程序使用fork()并且可能被开发为多线程,安全地编写此类应用程序需要考虑哪些经验法则/准则?

c - 在 C 中设置进程的内存限制(使用 fork 和 exec)

我想运行一个设置了内存限制的进程(最好是数据段、堆栈和堆)我的代码看起来像child=fork();if(child==0){...execv(program,args);}wait(&status);这个结构应该是保护者,我用它做了一些事情(重定向标准输入/输出,测量执行时间等)我的问题:如何为程序进程设置内存限制并在超过限制时通知父进程?进程不应该被sigsegv杀死,我想知道,进程被杀死只是因为这个内存限制。或者更好的是,有没有办法在完成时获取此进程的内存使用情况?该过程完成后,我可以比较最大使用内存。我不能使用valgrind(或类似的东西),因为我不能减慢执行时间。