标签: process

调用 fork 时是否复制线程?

如果我有一个使用线程运行的程序并fork()在基于 unix 的系统上调用,线程是否被复制?我知道当前进程的虚拟内存以 1:1 的比例复制到生成的新进程中。我知道线程在进程的虚拟内存中有自己的堆栈。因此,至少也应该复制线程堆栈。但是,我不知道不驻留在虚拟内存中的线程是否还有其他内容,因此不会被复制。如果没有,这两个进程是共享线程还是独立的副本?

c unix multithreading fork process

35
推荐指数
2
解决办法
1445
查看次数

Win32进程如何获得其父进程的pid?

我正在将命令行上的pid传递给子进程,但有没有办法在Win32 API中执行此操作?或者,有人可以减轻我的担心,如果父母已经去世,我经过的pid可能会在一段时间后属于另一个过程吗?

winapi process

34
推荐指数
4
解决办法
5万
查看次数

监视Windows中进程执行的某些系统调用

我希望能够监视进程发出的某些系统调用,主要是文件I/O调用.在Linux上,我可以使用带有合适参数的strace来逃避,但我怎样才能在Windows上执行此操作?

我主要对运行一个进程并确定它已经读取和写入的文件感兴趣.

编辑:我想从另一个进程以编程方式执行此操作.我知道ProcessMonitor,但我希望以一种形式接收数据,我可以将其导入另一个程序以进行进一步分析.

编辑:如果我进一步缩小我的要求,它可能足以监视对CreateFile()的调用.我真的只对打开的文件感兴趣,如果打开它们进行读/写或只是阅读.我没有说明的另一个要求是速度相当重要; 我正在计划为编译C++文件这样做,并且提取一个生成20MB日志文件的完整GUI会产生过高的开销.

编辑:如果它不需要管理权限也会很好.

windows cross-platform process

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

检查进程是否使用批处理文件返回0

我想用批处理文件启动一个进程,如果它返回非零,则执行其他操作.我需要正确的语法.

像这样的东西:

::x.bat

@set RetCode=My.exe
@if %retcode% is nonzero
   handleError.exe
Run Code Online (Sandbox Code Playgroud)

作为奖励,您可以考虑回答以下问题,请:)

  • 如何用复合语句写if
  • 如果应用程序My.exe无法启动因为某些DLL丢失,我的工作是否正常?如果没有,我怎么能检测到My.exe无法启动?

windows process batch-file exit-code

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

如何使用C#获取错误消息

因为vsinstr -coverage hello.exe,我可以使用C#代码如下.

Process p = new Process(); 
StringBuilder sb = new StringBuilder("/COVERAGE "); 
sb.Append("hello.exe"); 
p.StartInfo.FileName = "vsinstr.exe"; 
p.StartInfo.Arguments = sb.ToString(); 
p.Start(); 
p.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

当出现错误时,我收到错误消息:Error VSP1018: VSInstr does not support processing binaries that are already instrumented..

如何使用C#获取此错误消息?

解决了

我可以从答案中获取错误消息.

using System;
using System.Text;
using System.Diagnostics;

// You must add a reference to Microsoft.VisualStudio.Coverage.Monitor.dll

namespace LvFpga
{
    class Cov2xml
    {
        static void Main(string[] args)
        {
            Process p = new Process();
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;         
            p.StartInfo.UseShellExecute = …
Run Code Online (Sandbox Code Playgroud)

c# process

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

如何在不从PHP调用ps的情况下检查指定的PID当前是否正在运行?

我们想检查当前是否通过PHP运行指定的进程.

我们想简单地提供一个PID并查看它当前是否正在执行.

PHP有一个内部函数可以提供给我们这些信息,还是我们必须从"ps"输出中解析它?

php pid process

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

如何在c ++中检测win32进程创建/终止

我知道要接收有关Win32进程创建或终止的通知,我们可以使用API​​实现NT内核模式驱动程序,该驱动程序PsSetCreateProcessNotifyRoutine()能够注册系统范围的回调函数,每当新进程启动,退出或者被终止.

这是否可以在不创建NT内核模式驱动程序的情况下,仅使用使用c ++的Win32 API函数?当然,不使用无限循环的基本解决方案查询活动进程列表.

是否有任何库或win32 API提供相同的功能(系统范围的回调,异步事件)?

c++ winapi process

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

如何杀死nohup进程?

我执行了以下命令

$ nohup ./tests.run.pl 0 &
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用时将其杀死(以及从此脚本启动的执行)

$ kill -0 <process_id>
Run Code Online (Sandbox Code Playgroud)

这是行不通的.如何杀死nohupped进程以及通过nohupped脚本运行的进程?

谢谢

bash kill process nohup

33
推荐指数
4
解决办法
8万
查看次数

为什么fork()以它的方式工作

所以,我已经习惯了fork(),我知道它做了什么.作为初学者,我非常害怕它(我仍然不完全理解它).fork()你可以在网上找到的一般描述是,它复制当前进程并分配不同的PID,父PID和进程将有不同的地址空间.一切都很好,但是,鉴于这个功能描述,初学者会想知道"为什么这个功能如此重要......为什么我要复制我的过程?".所以我确实很奇怪,最终我发现你可以通过execve()家庭来调用当前流程中的其他流程.

我仍然不明白为什么你必须这样做?最合乎逻辑的是拥有一个可以调用的函数

create_process("executable_path+name",params..., more params); 
Run Code Online (Sandbox Code Playgroud)

这会生成一个新进程并在main()的开头运行它并返回新的PID.

困扰我的是fork/execve解决方案正在进行可能不需要的工作的感觉.如果我的进程使用大量内存怎么办?内核是否复制了我的页面表等.我确信它不会真正分配实际内存,除非我触及它.另外,如果我有线程会发生什么?在我看来,它太乱了.

几乎所有关于fork的描述,比如它只是复制进程并且新进程在fork()调用之后开始运行.这确实发生了什么,但为什么会这样发生?为什么fork/execve是产生新进程的唯一方法,以及从当前创建新进程的最常用的unix方法是什么?有没有其他更有效的方法来产生进程?**这不需要复制更多的内存.

这个帖子谈到同样的问题,但我发现它不太令人满意:

谢谢.

linux fork process

33
推荐指数
4
解决办法
7788
查看次数

进程'pid,ppid,uid,euid,gid和egid之间有什么区别?

上下文:我正在获取当前的Ruby进程ID.

Process.pid  #=> 95291

Process.ppid #=> 95201

Process.uid  #=> 501

Process.gid  #=> 20

Process.euid #=> 501

Process.egid #=> 20
Run Code Online (Sandbox Code Playgroud)

ruby pid process

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

标签 统计

process ×10

fork ×2

pid ×2

winapi ×2

windows ×2

bash ×1

batch-file ×1

c ×1

c# ×1

c++ ×1

cross-platform ×1

exit-code ×1

kill ×1

linux ×1

multithreading ×1

nohup ×1

php ×1

ruby ×1

unix ×1