我写了一个C程序,下面用execv
运行shell命令,用ptrace
跟踪它。
pid = fork();
if (pid == 0) {
// child process
ptrace(PTRACE_TRACEME, 0, NULL, NULL);
char** argv = new char*[3];
argv[0] = "/usr/bin/python3.6";
argv[1] = "pythoncode.py";
argv[2] = NULL;
execv(argv[0], argv);
} else
{
// parent process
pid_t p = wait4(-1, &stat, __WALL, &rusage_);
...
}
当我使用它运行普通的python代码时,它可以正常工作。但是今天,我在下面写了一个python代码
from selenium import webdriver
browser = webdriver.Chrome()
# do something
browser.close()
我可以在没有或没有ptrace
的外壳中成功运行它,但是当我同时使用execv
和ptrace
时,它总是会给我一个停止信号,并且信号代码为{{1 }}(非法指令)。有人知道为什么以及如何解决吗?