- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我试图获取我使用 setsid
运行的进程的 pid,它应该像这样在后台运行:
test.sh:
#/bin/bash
setsid nohup ./my_program &
echo $!
如果我运行 ./test.sh
,它将打印 my_program
进程的 pid,这正是我所需要的。但是如果像这样在我的 shell 中一个一个地运行这个命令:
$ setsid nohup ./my_program &
$ echo $!
它会给我 setsid
命令的 pid(或者可能是其他东西,但它几乎总是给我 my_program
的 pid 减一)。
这里发生了什么?为什么我自己在终端运行命令的结果与 test.sh
脚本的结果不同?
顺便说一句,您是否知道我使用 setsid 开始并需要在后台运行的一些简单流程?
最佳答案
关于linux - bash setsid nohup ./prog & -- $!不指向子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793448/
我想将脚本作为进程运行。所以在命令下运行, setsid test.sh > test.log & 但报错如下, setsid: failed to execute test.sh: No such
守护进程时不调用 setsid() 有什么危险? 最佳答案 When a user logs out from a session, all processes associated with tha
致力于 Jehanne 的 POSIX 信号仿真,我意识到 standard没有解释调用 setsid() 的进程的现有子进程会发生什么。 我想知道他们是否留在之前的 session 和进程组中,或者
好吧,请耐心等待,谷歌上似乎有一些关于这个的答案,但我就是找不到。 我在 Django Celery 环境中经过两次 fork 后运行它。我不知道这些是否可以改变某些东西,但我认为它们没有。 没有太多
在 shell 脚本中,我看到使用 setsid,我们可以创建一个新的进程组。创建后,我找不到可靠的方法来获取组 ID。我的要求很简单,启动一个进程,完成后,清理任何后代(如果有的话)。我不想杀死主进
为了运行程序,我写了一个shell: #!/bin/bash ulimit -c unlimited ulimit -n 65535 /usr/local/bin/myprogram -D #-D h
我正在尝试在nodejs中执行bash shell - 除了作业控制之外我一直在工作。我很确定这是因为生成的进程没有被设置为进程领导者。在 C 语言中,我可以通过调用setsid()来做到这一点。在n
由于某些原因,我必须使用“setsid”来运行我的所有命令。 但是,当运行“setsid scp ~/aaa user1@10.170.3.17:/tmp/”时,出现了一个要求输入密码的对话框。通常,
这是一个关于 Praveen Gollakota's 的答案的问题在 another question 中回答(这是我应该绕过评论特权的方式吗?)。 他对为什么 fork 两次这个问题的回答本质上是为
在 fork() 之后,我执行了一个 setsid 来创建一个新 session 。但是当我这样做时,我不能使用像 emacs 这样使用 termcaps 的程序。它会出现错误 "emacs: Cou
此问题是 this question 的后续问题. 当 posix_spawn() 发出 bash 命令时,我收到消息: bash: no job control in this shell 我认为是
我正在尝试使用 Anaconda3(64 位)连接到 MongoDB。我正在使用的代码: import signal import subprocess proc = subprocess.Popen
我的意思是我不能在 bash 中使用它,它在 OS X 上不可用,还是我的 Mac 上没有它? 这不是 PATH 变量的问题,因为我用 find 命令搜索,我的 Mac 上根本没有名为 setsid
我知道 os.setsid() 是将进程( fork )组 ID 更改为自身,但为什么我们需要它? 我可以看到来自 Google 的一些答案是:在父进程退出时保持子进程运行。 但根据我下面的测试,如果
我试图获取我使用 setsid 运行的进程的 pid,它应该像这样在后台运行: test.sh: #/bin/bash setsid nohup ./my_program & echo $! 如果我运
$ cat test1.sh #!/bin/bash setsid sleep 100 'test1.sh' shell 脚本不会立即退出。 $ cat test2.sh #!/bin/bash se
我一直在研究创建 Unix 守护进程,似乎有两种方法。啰嗦的,搜索的时候好像会出现,就是再调用fork(),setsid(),fork(), chdir() 到安全的地方,设置 umask() 最后,
我试过man(3) setsid,但它只解释了如何使用它,我不太明白setsid什么时候有用? 最佳答案 session 是共享一个控制终端的一组进程。当你想开始一个新的 session 时,sets
为什么在 setsid() 之前使用 fork() 来守护进程? 基本上,如果我想将一个进程与其控制终端分离并使其成为进程组领导:我使用 setsid()。 在没有 fork 的情况下这样做是行不通的
我有一个示例代码,但我不知道如何弄清楚发生了什么。我只展示相关部分。问题是make_daemon()。 根据我对 fork 的理解,从 close(0) 开始的代码是由应该有 pid == 0 的子进
我是一名优秀的程序员,十分优秀!