请看以下示例:
int main(void)
{
pid_t pid;
pid = fork();
if (pid == 0)
ChildProcess();
else
ParentProcess();
}
Run Code Online (Sandbox Code Playgroud)
所以纠正我,如果我错了,一旦fork()执行子进程被创建.现在通过这个答案 fork()返回两次.这对于父进程来说是一次,对于子进程则是一次.
这意味着在fork调用期间存在两个独立的进程,而不是在结束之后.
现在我不明白它如何理解如何为子进程返回0以及为父进程返回正确的PID.
这让它变得非常混乱.这个回答指出fork()通过复制进程的上下文信息并手动将返回值设置为0来工作.
首先,我说对任何函数的返回都放在一个寄存器中吗?因为在单个处理器环境中,进程只能调用一个只返回一个值的子例程(如果我错了,请纠正我).
假设我在例程中调用函数foo()并且该函数返回一个值,该值将存储在一个名为BAR的寄存器中.每次函数想要返回一个值时,它将使用特定的处理器寄存器.因此,如果我能够手动更改过程块中的返回值,我可以更改返回到函数的值吗?
所以我认为fork()的工作原理是正确的吗?
我已经下载了OCROpus Reader,并使用 - 在我的Ubuntu机器上安装了virtualenv:
$ virtualenv ocropus_venv/
$ source ocropus_venv/bin/activate
$ pip install -r requirements_1.txt
# tables has some dependencies which must be installed first:
$ pip install -r requirements_2.txt
$ wget -nd http://www.tmbdev.net/en-default.pyrnn.gz
$ mv en-default.pyrnn.gz models/
Run Code Online (Sandbox Code Playgroud)
现在,当我按照命令 - :
$ ./run-test
Run Code Online (Sandbox Code Playgroud)
我收到错误 - :
./run-test: line 4: ocropus-nlbin: command not found
Run Code Online (Sandbox Code Playgroud)
这是一个问题因为我在虚拟环境中安装了OCROpus吗?shell脚本无法找到已安装包的PATH吗?
需要一些帮助.
run-test.sh的内容是 - :
#!/bin/bash -e
rm -rf temp
ocropus-nlbin tests/testpage.png -o temp
ocropus-gpageseg 'temp/????.bin.png'
ocropus-rpred -n 'temp/????/??????.bin.png'
ocropus-hocr 'temp/????.bin.png' -o temp.html
ocropus-visualize-results temp …Run Code Online (Sandbox Code Playgroud) 好的我是Python的新手,但是如果这行我的代码不会运行
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
不存在于文件的开头.这是为什么 ?这是什么意思 ?如果安装了多个版本,我认为它用于表示python版本.
#!/usr/bin/python
def main():
a = [1,2,3]
print a
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
省略#!/ usr/bin/python 只有在我执行它时才会出现以下错误
./test.py 在Ubuntu上
但是,如果我使用python命令运行它然后运行正常没有/usr/bin线.