【发布时间】:2016-04-08 14:05:10
【问题描述】:
虽然我认为我已经掌握了 fork()、exec()、wait() 和 pid 如何在 C 中工作,但我还没有找到如何在程序中运行个人程序的方法。
这是我的代码:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h> /* for fork() */
#include<sys/types.h> /* for pid_t */
#include<sys/wait.h> /* fpr wait() */
int main(int argc, char* argv[])
{
char fileName[255];
pid_t pid;
switch (pid = fork()) {
case -1: //Did not fork properly
perror("fork");
break;
case 0: //child
execv(fileName[0],fileName);
puts("Oh my. If this prints, execv() must have failed");
exit(EXIT_FAILURE);
break;
default: //parent
//Infinite Loop
while (1) {
printf(" %s > ", argv[0]);
scanf("%s", fileName); // gets filename
if (fileName[0] == '\0') continue;
printf("\n Entered file: %s",fileName); // prints the fileName
waitpid(pid,0,0); /* wait for child to exit() */
break;
}
}
return 0;
}
我的问题如下:
我想将一个字符串作为输入,并且我想将其范围限制为 255 个字符。是
char fileName[255]然后scanf("%s", fileName);要走的路吗?我应该改用getLine()还是其他函数?-
假设输入正确。我如何执行一个现有的 hello world 程序。输入是否会存储在
*argv[]中?我发现可以在不同的程序中使用static char *argv[] = { "echo", "Foo is my name." , NULL }; execv("/bin/echo", argv);为了回显“Foo is my name.”。我可以用 helloWorld 程序做类似的事情吗?
【问题讨论】: