c语言问题

标签 c multithreading fork exuberant-ctags

我有一个 c 问题,任何人都可以帮助我。我用 C 语言编写了一个进程创建代码,它使用 pid 和 fork() 调用。 fork 调用现在用于制作子进程,任何人都可以告诉我如何制作父进程吗?我知道在进程中创建一个子进程会使进程自动成为父进程,但我想从一开始就创建一个父进程所以任何人都可以告诉我如何做到这一点, 其次,我只是创建了一个流程,但我不知道如何使用它,我无法为其分配任何工作(计算)。所以有人可以告诉我如何使用该流程进行工作吗?

第三个我想为我的流程命名我该怎么做以及我如何控制它们的执行? 如果有人能启发我,请帮助我理解这一切。 我将永远为此感激不尽 提前致谢

最佳答案

fork 调用创建了一个与现有进程相同的新进程,除了一些细微差别,例如它的 pid、父 pid。原始进程从完全相同的位置继续运行,这父进程。这意味着你的问题基本上没有意义。您不创建父进程,原始进程一旦创建子进程就成为父进程。

这有点像问“我通过怀孕和生育创造了一个 child ,但我如何创造 parent ?”您自动成为 parent 。

回到计算机...

当你 fork 时,系统调用将子进程的 pid 返回给父进程,将 0 返回给子进程,所以你应该有如下代码:

int pid = fork();
if (pid == 0)
{
    // in child, do child processing - normally exec an executable
}
else if (pid > 0)
{
    // in parent, do some processing - often wait for child to complete
}
else
{
    // fork failed -  handle the error
}

关于c语言问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3520402/

相关文章:

c - Eclipse 调试(CDT)控制台写入行

c - 使用无符号字符指针

c - 为什么这段 C 代码会在 macOS 上生成段错误,而在其他系统上不会?

python - 为什么 Elixir/SQLAlchemy 的 session.bind 在线程内设置为 None?

c - 如何测试调用进程是否是fork

c - 如何获取子进程的完整返回值?

c - 从 C 中的 IP 地址控件中检索文本

java - 多线程 "unpredictable"行为

java - GWT:多线程

c - 返回状态/值的适当范围