我希望能够在子 shell 中设置进程,就好像它不在子 shell 中一样。
$( sleep 3 & )只是忽略 & 符号。
我试过了:
$( sleep 3 & )
$( sleep 3 & ) &
$( sleep 3 ) &
Run Code Online (Sandbox Code Playgroud)
但没有任何改变。
然后我尝试$( disown sleep 3 & )返回
disown:无法操作子 shell 中的作业
这促使我尝试$( set -m; disown sleep 3 & ),但得到了相同的输出。
我什至尝试创建一个可以自行守护的 C++ 程序:
#include <unistd.h>
#include <chrono>
#include <thread>
using namespace std;
int main() {
int ret = fork();
if (ret < 0) return ret; // fork error …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个 C++ 脚本来运行一些简单的 Python 代码:
// t.cpp
#include <Python.h>
int main(int argc, char* argv[])
{
Py_Initialize();
PyRun_SimpleString("print('TEST PASSED')");
Py_Finalize();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行后g++ t.cpp,我收到错误:
t.cpp:1:20:致命错误:Python.h:没有这样的文件或目录
编译终止
我发现了许多类似的问题,全部特定于 IDE 或其他开发软件,或者通过安装python3-dev. 该python3-dev软件包已经安装,我什至尝试在尝试编译时手动包含标头:
g++ t.cpp -I ~/.virtualenvs/MainEnv/include/python3.5m/Python.h
g++ t.cpp -I /usr/include/python3.5m/Python.h
Run Code Online (Sandbox Code Playgroud)
两者都没有改变任何东西。
我该如何修复这个错误?
更新:我发现 usingg++ t.cpp -I /usr/include/python3.5/似乎包含标头,但随后遇到更多错误:
t.cpp:(.text+0x10): 对“Py_Initialize”的未定义引用
t.cpp:(.text+0x1f): 对 `PyRun_SimpleStringFlags' 的未定义引用
t.cpp:(.text+0x24): 对 `Py_Finalize' 的未定义引用
collect2:错误:ld 返回 1 退出状态