int number;
// In some process
wait(&number);
我正在对进程进行等待调用,并想知道这是否安全,还是会得到未定义的行为?
答案 0 :(得分:2)
这是安全的,因为您将变量的地址传递给函数。虽然number
未初始化,但其地址具有明确定义的值。因此,该函数可以安全地获取该地址,取消引用它,并在那里写入一个值,这正是wait
所做的。
pid_t wait(int *status);
...
如果status不为NULL,则wait()和waitpid()存储状态信息 在 它指向的int。
如果您在写入之前读取 {/ 1}}的值,并且仅当存储的值是陷阱表示(即不存在)时,您将只有未定义的行为代表一个“真正的”价值。)
答案 1 :(得分:1)
如果@app.route('/upload_something/', methods=['GET', 'POST'])
def upload_something():
# a line to produce filename variable or to get it back from HTML is needed here
if request.method == 'POST':
# your upload starts here.
return render_template('file_upload.html', file_name = file_name)
表示等待分叉进程退出的系统调用wait
,则可以安全地执行此操作。 wait
可以取消初始化,因为number
会将状态存储在该变量中。
如果您正在讨论另一个wait
函数,那么在没有查看该wait
函数的源代码的情况下,我无法告诉您。