【发布时间】:2018-08-01 14:40:09
【问题描述】:
给定用户在命令行中的一个数字,我需要返回该数字的平方并将其存储到一个名为 child.txt 的文件中,但我需要通过创建一个子进程并使用 exec() 来做到这一点.我该怎么做?这是我目前所拥有的:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
FILE *f;
f = fopen("child.txt", "w");
int pid = fork();
square(argv);
exec(); // This is wrong, I need to fix this
return 0;
}
int square(char *argv[]) {
int i;
i = atoi(argv[1]);
return i*i;
}
我应该将哪些参数传递给exec()?我见过其他例子,其中 exec() 有 echo 或 -ls 等参数,但是否有可能以某种方式传入我编写的 square() 函数?
【问题讨论】:
-
exec()实际上是用来启动一个可执行文件。square本身实际上是一个函数,所以你需要做的就是以某种方式使其成为自己的可执行文件。 -
你的问题就像问如何用锤子给灯泡供电。这真的没有任何意义。 为什么你需要使用
exec()? -
很抱歉,不清楚,我在作业上得到了两行指令。我可以制作一个单独的 square.c,编译它并将其转换为可执行文件,我只需要一个示例,说明如何将 exec() 与此可执行文件一起使用,然后将输出存储到文件中。
-
我需要使用 exec() 才能理解它,只是想学习一下。
标签: c system-calls