- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 C 中的 (char* argv[]) 数组的末尾附加一个值。基本上我正在尝试解决一个问题,即父级将命令行参数(在 argv[])传递给子级添加数字。我为每两个数字创建一个子项并将它们传递到 argv[] 中。想要将子进程返回的结果和再次追加到父进程中以创建子进程,直到数量减少到1。
最佳答案
Basically I am trying to work on a problem where parent will pass the command line args (in
argv[]
) to the child for adding the numbers. I am creating a child for every two numbers and passing them inargv[]
. I want to append the result sum returned from the child again to parent's to create child process until the number reduces to one.
这是不可行的;子进程的内存与父进程的内存完全分开。 child 无法直接修改 parent 的内存。您将需要使用某种形式的 IPC(进程间通信)来从子进程获取信息。
你当然可以将论点传递给 children ;这是(相对)直接的。但是,您将需要一种机制,例如管道,供父级从子级检索答案。
请注意,这种机制作为说明进程间通信所涉及问题的一种方式是有意义的;它作为一种累加数字的方式没有意义,因为与在单个程序中完成工作的成本相比,进程启动和 IPC 的开销是巨大的。
How to append a value at the end of the (char* argv[]) array in C.
如果您想这样做,您必须:
argc
和 argv
的新值。argv
时释放它(除非您的程序在使用新值完成时正在退出或执行,在这种情况下,您不需要不需要释放它)。概述:
char **newv = malloc((argc + 2) * sizeof(*newv));
// Error check omitted
memmove(newv, argv, sizeof(*newv) * argc);
newv[argc] = new_value;
newv[argc+1] = 0;
argc++;
argv = newv;
...
free(newv);
关于c - 如何在 C 语言中的 char* argv[] 数组末尾追加一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7786552/
我是一名优秀的程序员,十分优秀!