小编Mac*_*333的帖子

fork()如何知道何时返回0?

请看以下示例:

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()的工作原理是正确的吗?

c unix fork process internals

49
推荐指数
4
解决办法
4907
查看次数

python-virtualenv:无法正确运行bash脚本

我已经下载了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 bash virtualenv

2
推荐指数
1
解决办法
219
查看次数

Python - 如果没有#!/ usr/bin/python,代码就无法运行

好的我是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线.

python shell

-1
推荐指数
1
解决办法
585
查看次数

标签 统计

python ×2

bash ×1

c ×1

fork ×1

internals ×1

process ×1

shell ×1

unix ×1

virtualenv ×1