【问题标题】:How to get the pid of a process started using system call?如何使用系统调用启动进程的pid?
【发布时间】:2016-01-27 11:09:35
【问题描述】:

在 C 程序中,在 main 中,我使用 system() 调用系统函数。 现在我想要由system() 启动的那个进程的pid。 有没有办法得到那个pid?

【问题讨论】:

  • 当system(3) 返回时,不再有任何(子)进程。您的问题仅在另一个线程中才有意义;在单线程应用中,完全没有意义。

标签: linux linux-kernel embedded-linux system-calls


【解决方案1】:

不,一般来说它没有用。当system()的调用返回到你的程序时,子进程已经终止并被收割,所以没有进程(甚至不是僵尸进程)可供它引用。

如果您需要启动一个进程并保留其 PID,您需要自己 fork() 一个子进程(注意父进程中的返回值),并在子进程中 exec() 命令。在父级中,您现在拥有 PID,并且可以使用它(例如在 waitpid() 中)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2018-03-01
  • 2012-03-12
  • 1970-01-01
  • 2023-03-18
  • 2014-04-12
相关资源
最近更新 更多