c - Exec() 和 Fork()

标签 c unix posix daemon

所以我在unix中创建了一个c程序。这就是它的作用。

1)它 fork 了一个进程。

子进程: 对闹钟程序执行 execv(),该程序在“x”秒后打印“Alarm rang”

父进程: 对上面的子进程执行 waitPID。 然后退出。

输出: 所以我运行了它,我收到了“警报在 x 秒后响起”

一切正常。但现在我想要的是让子进程在后台运行。这意味着我不想看到它的输出。但我希望它运行并退出。

最佳答案

要让子进程在后台运行,需要将其设置为 daemon process .

要使其成为守护进程,需要遵循几个步骤..

  1. fork 父进程
  2. 更改文件模式掩码 (umask)
  3. 打开任何日志进行写入
  4. 创建唯一的 session ID (SID)
  5. 将当前工作目录更改到安全位置
  6. 关闭标准文件描述符

有关更好的解释,请参阅this .

关于c - Exec() 和 Fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32421397/

相关文章:

c - 执行 : how can I initialise char *argv[ ] with multiple commands instead of a single command?

c - 权限位解释

c - Posix select()/poll() 和 pthread IPC

c - 变量失去值(value)

linux - Unix Shell 脚本中浮点值的关系运算符

unix - 查找在特定 ssh session 或日期中创建的文件

java - 在未处理的异常期间,JVM 会发出什么信号?

c - 统一的安静输出?

android - fatal error : linux/compiler-gcc6. h:没有这样的文件或目录#include gcc_header(__GNUC__) ^

c - 链表 : how to delete last node, 我们有指向单个链表中最后一个节点的指针